Closed
Bug 594465
Opened 16 years ago
Closed 7 years ago
'{}' (OP_newobject) is lower than 'new Object'
Categories
(Tamarin Graveyard :: Baseline JIT (CodegenLIR), defect)
Tracking
(Not tracked)
RESOLVED
WONTFIX
People
(Reporter: jodyer, Unassigned)
Details
(The following description only applies to jitted code.)
Steps to reproduce:
1. Compile my small test app:
http://jacksondunstan.com/articles/801
(also attached)
2. Observe the displayed performance results
(example SWF attached)
3. (optional) Read my analysis, complete with disassembly (by nemo440):
http://jacksondunstan.com/articles/801
Actual Results:
Creating an empty Object with the "o = {}" syntax is slower than using the equivalent "o = new Object()" syntax. The "o = new Object()" syntax creates objects 1.47x faster on Windows XP and 1.37x faster on Mac OS X 10.5.
Expected Results:
Both methods of creating en empty object should yield identical bytecode and performance, i.e. the bytecode currently generated by "o = new Object()"
Workaround (if any):
Change all source code using "o = {}" to "o = new Object()"
Seems like there is a missing optimization for OP_newobject in the Jitter. 'new Object' is slower for interpreted code (as expected), but faster for Jitted code. Transferring to bugzilla.
Interpreted: curley 781ms, newObject 920ms
Jitted: curley 694ms, newObject 540ms
test case:
class A {
function curley() {
return {}
}
function newObject() {
return new Object
}
}
var a = new A;
var t0 = new Date;
for (var i: int = 0; i < 1000000; i++) {
a.curley();
}
var t1 = new Date;
print("curley "+(t1-t0)+"ms");
t0 = new Date;
for (var i: int = 0; i < 1000000; i++) {
a.newObject();
}
t1 = new Date;
print("newObject "+(t1-t0)+"ms");
[ Show » ]
Seems like there is a missing optimization for OP_newobject in the Jitter. 'new Object' is slower for interpreted code (as expected), but faster for Jitted code. Transferring to bugzilla.
Interpreted: curley 781ms, newObject 920ms
Jitted: curley 694ms, newObject 540ms
test case:
class A {
function curley() {
return {}
}
function newObject() {
return new Object
}
}
var a = new A;
var t0 = new Date;
for (var i: int = 0; i < 1000000; i++) {
a.curley();
}
var t1 = new Date;
print("curley "+(t1-t0)+"ms");
t0 = new Date;
for (var i: int = 0; i < 1000000; i++) {
a.newObject();
}
t1 = new Date;
print("newObject "+(t1-t0)+"ms");
This bug is transferred from: https://bugs.adobe.com/jira/browse/ASC-4129
Comment 3•16 years ago
|
||
And what about '[]' vs 'new Array'?
Comment 4•7 years ago
|
||
Tamarin isn't maintained anymore. WONTFIX remaining bugs.
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → WONTFIX
You need to log in
before you can comment on or make changes to this bug.
Description
•