[ https://issues.apache.org/jira/browse/FLEX-35330?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16061882#comment-16061882 ]
Justin Mclean commented on FLEX-35330: -------------------------------------- Here's what I get for Safari 10.1.1 Uninitialised != : 18 Uninitialised !== : 16 Null initialised != : 16 Null initialised !== : 14 Uninitialised != : 18 Uninitialised !== : 16 Null initialised != : 16 Null initialised !== : 14 Uninitialised != : 18 Uninitialised !== : 17 Null initialised != : 17 Null initialised !== : 14 Uninitialised != : 19 Uninitialised !== : 16 Null initialised != : 17 Null initialised !== : 15 Uninitialised != : 17 Uninitialised !== : 16 Null initialised != : 17 Null initialised !== : 15 > [FlexJS] comparison of objects using non strict inequality or non strict > equality 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 !== undefined) { > 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)