[
https://issues.apache.org/jira/browse/FLEX-35330?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Justin Mclean updated FLEX-35330:
---------------------------------
Description:
Code use to test:
{code}
<?xml version="1.0" encoding="utf-8"?>
<js:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:js="library://ns.apache.org/flexjs/basic"
applicationComplete="init()">
<js:valuesImpl>
<js:SimpleCSSValuesImpl/>
</js:valuesImpl>
<fx:Script><![CDATA[
protected function init():void
{
var start:Date;
var end:Date;
var took:Number;
var obj1:Object;
var obj2:Object;
var obj3:Object = null;
var obj4:Object = null;
var i:int;
var j:int;
j = 0;
start = new Date();
for (i = 0; i < 1e7; i++) {
if (obj1 != null) {
j++;
}
}
end = new Date();
took = end.getTime() - start.getTime();
trace("Uninitialised != : " + took);
j = 0;
start = new Date();
for (i = 0; i < 1e7; i++) {
if (obj2 !== null) {
j++;
}
}
end = new Date();
took = end.getTime() - start.getTime();
trace("Uninitialised !== : " + took);
j = 0;
start = new Date();
for (i = 0; i < 1e7; i++) {
if (obj3 != null) {
j++;
}
}
end = new Date();
took = end.getTime() - start.getTime();
trace("Null initialised != : " + took);
j = 0;
start = new Date();
for (i = 0; i < 1e7; i++) {
if (obj4 !== null) {
j++;
}
}
end = new Date();
took = end.getTime() - start.getTime();
trace("Null initialised !== : " + took);
}
]]></fx:Script>
<js:initialView>
<js:View percentWidth="100" percentHeight="100">
<js:Label id="result" />
</js:View>
</js:initialView>
</js:Application>
{code}
Output of 5 consecutive tests:
Uninitialised != : 18
Uninitialised !== : 18
Null initialised != : 16
Null initialised !== : 13
Uninitialised != : 20
Uninitialised !== : 18
Null initialised != : 17
Null initialised !== : 14
Uninitialised != : 18
Uninitialised !== : 19
Null initialised != : 16
Null initialised !== : 14
Uninitialised != : 18
Uninitialised !== : 18
Null initialised != : 16
Null initialised !== : 14
Uninitialised != : 19
Uninitialised !== : 18
Null initialised != : 17
Null initialised !== : 14
Smaller numbers are faster. Run on Chrome 55 on OSX.
You can see about a 35% performance increase.
Note there is also a small performance increase in use non strict inequality
and assigning to null.
was:
Code use to test:
{code}
<?xml version="1.0" encoding="utf-8"?>
<js:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:js="library://ns.apache.org/flexjs/basic"
applicationComplete="init()">
<js:valuesImpl>
<js:SimpleCSSValuesImpl/>
</js:valuesImpl>
<fx:Script><![CDATA[
protected function init():void
{
var start:Date;
var end:Date;
var took:Number;
var obj1:Object;
var obj2:Object;
var obj3:Object = null;
var obj4:Object = null;
var i:int;
var j:int;
j = 0;
start = new Date();
for (i = 0; i < 1e7; i++) {
if (obj1 != null) {
j++;
}
}
end = new Date();
took = end.getTime() - start.getTime();
trace("Uninitialised != : " + took);
j = 0;
start = new Date();
for (i = 0; i < 1e7; i++) {
if (obj2 !== null) {
j++;
}
}
end = new Date();
took = end.getTime() - start.getTime();
trace("Uninitialised !== : " + took);
j = 0;
start = new Date();
for (i = 0; i < 1e7; i++) {
if (obj3 != null) {
j++;
}
}
end = new Date();
took = end.getTime() - start.getTime();
trace("Null initialised != : " + took);
j = 0;
start = new Date();
for (i = 0; i < 1e7; i++) {
if (obj4 !== null) {
j++;
}
}
end = new Date();
took = end.getTime() - start.getTime();
trace("Null initialised !== : " + took);
}
]]></fx:Script>
<js:initialView>
<js:View percentWidth="100" percentHeight="100">
<js:Label id="result" />
</js:View>
</js:initialView>
</js:Application>
{code}
Output of 5 consecutive tests:
Uninitialised != : 18
Language.js:354 Uninitialised !== : 18
Language.js:354 Null initialised != : 16
Language.js:354 Null initialised !== : 13
Uninitialised != : 20
Language.js:354 Uninitialised !== : 18
Language.js:354 Null initialised != : 17
Language.js:354 Null initialised !== : 14
Uninitialised != : 18
Language.js:354 Uninitialised !== : 19
Language.js:354 Null initialised != : 16
Language.js:354 Null initialised !== : 14
Uninitialised != : 18
Language.js:354 Uninitialised !== : 18
Language.js:354 Null initialised != : 16
Language.js:354 Null initialised !== : 14
Uninitialised != : 19
Language.js:354 Uninitialised !== : 18
Language.js:354 Null initialised != : 17
Language.js:354 Null initialised !== : 14
Smaller numbers are faster. Run on Chrome 55 on OSX.
You can see about a 35% performance increase.
Note there is also a small performance increase in use non strict inequality
and assigning to null.
> [FlexJS] comparison of objects using non strict inequality is slow
> ------------------------------------------------------------------
>
> Key: FLEX-35330
> URL: https://issues.apache.org/jira/browse/FLEX-35330
> Project: Apache Flex
> Issue Type: Bug
> Affects Versions: Apache FlexJS 0.7.0
> Reporter: Justin Mclean
>
> Code use to test:
> {code}
> <?xml version="1.0" encoding="utf-8"?>
> <js:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
> xmlns:js="library://ns.apache.org/flexjs/basic"
> applicationComplete="init()">
> <js:valuesImpl>
> <js:SimpleCSSValuesImpl/>
> </js:valuesImpl>
> <fx:Script><![CDATA[
> protected function init():void
> {
> var start:Date;
> var end:Date;
> var took:Number;
> var obj1:Object;
> var obj2:Object;
> var obj3:Object = null;
> var obj4:Object = null;
> var i:int;
> var j:int;
> j = 0;
> start = new Date();
> for (i = 0; i < 1e7; i++) {
> if (obj1 != null) {
> j++;
> }
> }
> end = new Date();
> took = end.getTime() - start.getTime();
> trace("Uninitialised != : " + took);
> j = 0;
> start = new Date();
> for (i = 0; i < 1e7; i++) {
> if (obj2 !== null) {
> j++;
> }
> }
> end = new Date();
> took = end.getTime() - start.getTime();
> trace("Uninitialised !== : " + took);
> j = 0;
> start = new Date();
> for (i = 0; i < 1e7; i++) {
> if (obj3 != null) {
> j++;
> }
> }
> end = new Date();
> took = end.getTime() - start.getTime();
> trace("Null initialised != : " + took);
> j = 0;
> start = new Date();
> for (i = 0; i < 1e7; i++) {
> if (obj4 !== null) {
> j++;
> }
> }
> end = new Date();
> took = end.getTime() - start.getTime();
> trace("Null initialised !== : " + took);
> }
> ]]></fx:Script>
> <js:initialView>
> <js:View percentWidth="100" percentHeight="100">
> <js:Label id="result" />
> </js:View>
> </js:initialView>
> </js:Application>
> {code}
> Output of 5 consecutive tests:
> Uninitialised != : 18
> Uninitialised !== : 18
> Null initialised != : 16
> Null initialised !== : 13
> Uninitialised != : 20
> Uninitialised !== : 18
> Null initialised != : 17
> Null initialised !== : 14
> Uninitialised != : 18
> Uninitialised !== : 19
> Null initialised != : 16
> Null initialised !== : 14
> Uninitialised != : 18
> Uninitialised !== : 18
> Null initialised != : 16
> Null initialised !== : 14
> Uninitialised != : 19
> Uninitialised !== : 18
> Null initialised != : 17
> Null initialised !== : 14
> Smaller numbers are faster. Run on Chrome 55 on OSX.
> You can see about a 35% performance increase.
> Note there is also a small performance increase in use non strict inequality
> and assigning to null.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)