JSI2性能测试报告

JSI2性能测试报告

装载效率测试
测试页面见:test/load-eff-test.html

为了测试结果更显客观,我选择了第三方类库的装载测试:
'com.yahoo.yui.*',
'net.conio.prototype.*',
'net.fckeditor.*',
'org.jquery.*',
'us.aculo.script.*'
共22个脚本文件(对于JSI来说还有诺干包定义文件)。

FF2:  
标记导入时间(原始方式):
469 , 469 , 1047 , 484 , 484 , 437 , 469 , 484   
同步导入时间:
469 , 453 , 484 , 437 , 469 , 453   
延迟导入时间:
921 , 765 , 891 , 906 , 953 , 906 , 922   
异步导入时间:
859 , 1093 , 1141 , 1031 , 1641 , 1125 , 1078 , 1093 , 1157 , 1141   
  
IE7:  
标记导入时间:
343 , 297 , 297 , 344 , 328 , 328   
同步导入时间:
281 , 250 , 235 , 235 , 234 , 234 , 250 , 265   
延迟导入时间:
922 , 422 , 406 , 391 , 391 , 391 , 407 , 391   
异步导入时间:
625 , 672 , 672 , 703 , 703 , 672 , 703 , 704 , 688   



运行时间测试
测试脚本管理后对新能的影响,影响因素有:全局变量和局部变量的查找时间差异,eval的脚本和script标记直接插入的脚本的可能差异。(这 个测试不具有普遍性,这里我主要是测试了一下浏览器对局部变量的访问速度【JSI里面访问变量都是装载单元内的局部变量】,所以故意测试了大量局部变量访 问的操作)
测试页面见:test/runtime-eff-test.html

FF2:  
jsiTime:        
845 ,     927 ,     598 ,     687 ,     764 ,  
scriptTime:     
1432 ,    950 ,     1305 ,    1278 ,    1219 ,  
evalTime:       
1644 ,    1373 ,    1322 ,    1186 ,    1360 ,  
execTime:       
0   
dscriptTime:    
1432 ,    950 ,     1305 ,    1278 ,    1219 ,     
  
IE7:  
jsiTime:    
295 ,     205 ,     157 ,     315 ,     156 ,     142 ,     375 ,     328 ,     172 ,     172 ,      
scriptTime: 
172 ,     172 ,     189 ,     140 ,     251 ,     187 ,     217 ,     203 ,     172 ,     234 ,      
evalTime:   
236 ,     249 ,     139 ,     172 ,     281 ,     171 ,     172 ,     108 ,     436 ,     359 ,      
execTime:   
219 ,     234 ,     314 ,     157 ,     220 ,     266 ,     204 ,     234 ,     187 ,     95 ,   
dscriptTime:    
187 ,     265 ,     294 ,     326 ,     187 ,     328 ,      141 ,    221 ,     127 ,     249 ,       



上面的基数太小,随机误差太大,调整原始数据从新测试一遍jsiTime和scriptTime

jsiTime:     576 ,     658 ,     688 ,     703 ,     611 ,     608 ,          
scriptTime: 
706 ,     608 ,     562 ,     547 ,     655 ,     657 ,    


总结:

JSI的装载性能表现不错,完全不必计较。
托管代码的运行性能也没有太大区别,不过,因为。JSI托管脚本使用的变量基本都是装载单元内的局部变量(本地声明变量,或者外部依赖的引用或值拷贝),所以,对于FF这类局部变量比全局变量访问速度快不少的解释引擎,JSI托管脚本可以达到更好的运行效率。

有个奇怪的问题,JSI在装载类库时,与传统模式相比,肯定增加了些额外的运算,但是,貌似JSI的同步装载模式下,装载脚本的耗时比传统模式还少(IE 表现明显)?为何?
欢迎大家对这奇怪的现象提出自己的猜想,我稍后贴出我对此问题的看法^_^

你可能感兴趣的:(JSI2性能测试报告)