Lively Kernel canvas
DraftBenchmarkContextJSuploadresultsoldresults
Config.ignoredepricatedProceed=trueextendString=function(s,length){while(s.length<length){s=s+"";}returns}extendString("123",20)ContextJSBenchmarkDate:ThuOct07201016:17:56GMT+0200(CEST)Browser:Mozilla/5.0(Macintosh;U;IntelMacOSX10_6_4;en-us)AppleWebKit/533.18.1(KHTML,likeGecko)Version/5.0.2Safari/533.18.5Revision:30490nameopstimeops/timePLAINo.foo1()12800101280Instancespecifico.foo12560028914ManualWrapo.foo1640010640..withapplyarguments640010640..withapply$A(arguments)320011291Wrapo.foo1()8001173Layeredo.foo2()8001747Layeractiveo.foo2()4001724activeLayersPLAIN16001794MyLayerableObjectPLAIN8001553MyLayerableObjectsetWithLayers4001040..(inowner)8001844..(owner.owner)8001942..(inowner.owner.owner)4001040..(inowner.owner.ownerFAIL)8001267AltLayerableObj.PLAIN8001267AltLayerableObj.setWithLayers8001942..(inowner)8001844..(owner.owner)8001942..(inowner.owner.owner)8001942..(inowner.owner.ownerFAIL)8001267WorkspaceX–CopBenchmark.MAXSIZE=1000000000CopBenchmark.TARGETTIME=10require('cop.Layers').toRun(function(){LayerableObject.subclass("FastLayerableObject",{activeLayers:function(){varresult={withLayers:[],withoutLayers:[]};result=this.dynamicLayers(result);result=this.structuralLayers(result)result=this.globalLayers(result)returnresult.withLayers},collectWithLayersIn:function(layers,result){for(vari=0;i<layers.length;i++){varea=layers[i]if((result.withLayers.indexOf(ea)===-1)&&(result.withoutLayers.indexOf(ea)===-1)){result.withLayers.unshift(ea)}};},collectWithoutLayersIn:function(layers,result){for(vari=0;i<withLayers.length;i++){varea=withLayers[i]if((result.withoutLayers.indexOf(ea)===-1)){result.withoutLayers.push(ea)}};},dynamicLayers:function(result){//optimizedversion,thatdoesnotuseclosuresandrecursionvarallLayers=result.withLayers;varallWithoutLayers=result.withoutLayers;varstack=cop.LayerStack;//topdown,ignorebottomelementfor(varj=stack.length-1;j>0;j--){varcurrent=stack[j];if(current.withLayers){for(vari=0;i<current.withLayers.length;i++){varea=current.withLayers[i];if((allLayers.indexOf(ea)===-1)&&(allWithoutLayers.indexOf(ea)===-1)){allLayers.push(ea)}}};if(current.withouLayers){for(vari=0;i<current.withoutLayers.length;i++){varea=current.withoutLayers[i];varea=allWithoutLayers[i]allWithoutLayers.push(ea)};}}returnresult},structuralLayers:function(result){varallLayers=result.withLayers;varallWithoutLayers=result.withoutLayers;varobj=this;//goownerchainbackwardandgatheralllayeractivationsanddeactivationswhile(obj){//don'tuseaccessormethodsbecauseofspeed...(notmeasuredyet)if(obj.withLayers){this.collectWithLayersIn(obj.withLayers,result);};if(obj.withoutLayers){this.collectWithoutLayersIn(obj.withoutLayers,result);};//recurse,stopifownerisundefinedobj=obj.owner}returnresult;},globalLayers:function(result){this.collectWithLayersIn(cop.GlobalLayers,result);returnresult},});})Object.subclass('MyObject',{foo1:function(a){returna*a},foo2:function(a){returna*a},})createLayer("MyLayer");layerClass(MyLayer,MyObject,{foo2:function(a){returncop.proceed(a)*a}})Object.subclass('MyStructuralObject',{foo:function(a){returna*a},})layerClass(MyLayer,MyStructuralObject,{foo:function(a){returncop.proceed(a)*a}})LayerableObject.subclass("MyLayerableObject",{foo:function(a){returna*a}})layerClass(MyLayer,MyLayerableObject,{foo:function(a){returncop.proceed(a)*a}})LayerableObject.subclass("AltLayerableObject",{foo:function(a){returna*a},})layerClass(MyLayer,AltLayerableObject,{foo:function(a){returncop.proceed(a)*a}})//BenchmarksCopBenchmark.benchmarksToRun=[{name:"PLAINo.foo1()",run:function(name){varo=newMyObject();console.profile()CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o.foo1(i)}})console.profileEnd()}},{name:"Instancespecifico.foo1",run:function(name){varo=newMyObject();o.foo1=function(a){returna*a*a}CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o.foo1(i)}})}},{name:"ManualWrapo.foo1",run:function(name){varo=newMyObject();varoldFunc=o.foo1;o.foo1=function(v){oldFunc(v)*v}CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o.foo1(i)}})}},{name:"..withapplyarguments",run:function(name){varo=newMyObject();varoldFunc=o.foo1;o.foo1=function(v){oldFunc.apply(o,arguments)*v}CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o.foo1(i)}})}},{name:"..withapply$A(arguments)",run:function(name){varo=newMyObject();varoldFunc=o.foo1;o.foo1=function(v){oldFunc.apply(o,$A(arguments))*v}CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o.foo1(i)}})}},{name:"Wrapo.foo1()",run:function(name){varo=newMyObject();o.foo1=o.foo1.wrap(function(p,v){p(v)+v})CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o.foo1(i)}})}},{name:"Layeredo.foo2()",run:function(name){varo=newMyObject();CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o.foo2(i)}})}},{name:"Layeractiveo.foo2()",run:function(name){varo=newMyObject();withLayers([MyLayer],function(){CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o.foo2(i)}})})}},{name:"activeLayersPLAIN",run:function(name){varo=newMyStructuralObject();o.activeLayers=function(){return[]};CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o.foo(i)}})}},{name:"MyLayerableObjectPLAIN",run:function(name){varo=newMyLayerableObject();CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o.foo(i)}})}},{name:"MyLayerableObjectsetWithLayers",run:function(name){varo=newMyLayerableObject();o.setWithLayers([MyLayer])CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o.foo(i)}})}},{name:"..(inowner)",run:function(name){varo=newMyLayerableObject();o.setWithLayers([MyLayer])varo2=newMyLayerableObject();o2.lookupLayersIn=["owner"]o2.owner=oCopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o2.foo(i)}})}},{name:"..(owner.owner)",run:function(name){varo=newMyLayerableObject();o.setWithLayers([MyLayer])varo2=newMyLayerableObject();o2.lookupLayersIn=["owner"]o2.owner=o;varo3=newMyLayerableObject();o3.lookupLayersIn=["owner"];o3.owner=o2;CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o3.foo(i)}})}},{name:"..(inowner.owner.owner)",run:function(name){varo=newMyLayerableObject();o.setWithLayers([MyLayer])varo2=newMyLayerableObject();o2.lookupLayersIn=["owner"]o2.owner=o;varo3=newMyLayerableObject();o3.lookupLayersIn=["owner"];o3.owner=o2;varo4=newMyLayerableObject();o4.lookupLayersIn=["owner"];o4.owner=o3;CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o4.foo(i)}})}},{name:"..(inowner.owner.ownerFAIL)",run:function(name){varo=newMyLayerableObject();varo2=newMyLayerableObject();o2.lookupLayersIn=["owner"]o2.owner=o;varo3=newMyLayerableObject();o3.lookupLayersIn=["owner"];o3.owner=o2;varo4=newMyLayerableObject();o4.lookupLayersIn=["owner"];o4.owner=o3;CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o4.foo(i)}})}},{name:"AltLayerableObj.PLAIN",run:function(name){varo=newAltLayerableObject();CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o.foo(i)}})}},{name:"AltLayerableObj.setWithLayers",run:function(name){varo=newAltLayerableObject();o.setWithLayers([MyLayer])CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o.foo(i)}})}},{name:"..(inowner)",run:function(name){varo=newAltLayerableObject();o.setWithLayers([MyLayer])varo2=newAltLayerableObject();o2.lookupLayersIn=["owner"]o2.owner=oCopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o2.foo(i)}})}},{name:"..(owner.owner)",run:function(name){varo=newAltLayerableObject();o.setWithLayers([MyLayer])varo2=newAltLayerableObject();o2.lookupLayersIn=["owner"]o2.owner=o;varo3=newAltLayerableObject();o3.lookupLayersIn=["owner"];o3.owner=o2;CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o3.foo(i)}})}},{name:"..(inowner.owner.owner)",run:function(name){varo=newAltLayerableObject();o.setWithLayers([MyLayer])varo2=newAltLayerableObject();o2.lookupLayersIn=["owner"]o2.owner=o;varo3=newAltLayerableObject();o3.lookupLayersIn=["owner"];o3.owner=o2;varo4=newAltLayerableObject();o4.lookupLayersIn=["owner"];o4.owner=o3;CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o4.foo(i)}})}},{name:"..(inowner.owner.ownerFAIL)",run:function(name){varo=newAltLayerableObject();varo2=newAltLayerableObject();o2.lookupLayersIn=["owner"]o2.owner=o;varo3=newAltLayerableObject();o3.lookupLayersIn=["owner"];o3.owner=o2;varo4=newAltLayerableObject();o4.lookupLayersIn=["owner"];o4.owner=o3;CopBenchmark.benchmarkBlock(name,1,function(size,obj){for(vari=0;i<size;i++){o4.foo(i)}})}},]CopBenchmark.runDelayed=functionrunDelayed(){varbenchmark=CopBenchmark.benchmarksToRun.shift();if(!benchmark){CopBenchmark.printResults();return};//console.log("run"+benchmark.name)//console.profile(benchmark.name);benchmark.run(benchmark.name);//console.profileEnd(benchmark.name);Global.setTimeout(runDelayed,10);};CopBenchmark.result="ContextJSBenchmark\n"+"Date:\t"+newDate()+"\n"+"Browser:\t"+navigator.userAgent+"\n"+"Revision:\t"+WikiNavigator.current.model.getOriginalRevision()+"\n"+"name\topstimeops/time\n";CopBenchmark.runDelayed();WorkspaceX–Wikicontrol