• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
元某人的代码农场
博客园    首页    新随笔    联系   管理    订阅  订阅

jQuery1.6性能评测

上次做了jQuery1.5.1 DOM相关的函数性能测试,有童鞋指出我的计算方法不太合理,这里换了计时方式。

承接上一篇日志,这次要做的是jQuery1.6与1.5.2的属性值相关性能测试,1.6版本重写了绝大部分属性值函数,效果如何,慢慢道来。

首先是这次的计时函数。如下所示:

$(function(){
		var t1=new Date();
		var t2=new Date();
		var sum=0;
		var $input=$("#test");
		while(t2-t1<500){
			for(var i=0;i<500;i++){
				value=$input.val();
			}
			sum+=500;
			t2=new Date();
		}
		alert((t2.getTime()-t1.getTime())/sum*1000);
	});

上次是直接循环3000次,然后算时间,3000次在IE6里往往要超时,而且IE6把弹提示框并等你按确认的时间也算进去了。所以误差巨大。这次控制时间为500ms以内,然后统计循环的次数,为了减少Date()函数的花销,设计了这个二重循环。最后求的的时间是函数单次运行的平均时间,单位是微秒,就是毫秒的千分之一。

结果如图。

val函数性能的确有明显进步,其余属性函数基本没有进步,甚至不如1.5.2了。也许是1.6换代码只是为了计算更精确和修正BUG,用意不在性能。

不过width函数慢的有点离谱,在IE6下直接用原生的offsetWidth方法可以只用30微秒,源代码中发现jQuery调用each函数累加了width、margin、padding。好吧,这是css定义的方式。但是我还是没想通,为什么一个空div,一句css不写。原生和jQuery能跑出10倍的性能差。

最后,IE6一如既往的慢,Opera一如既往的优秀和性能稳定。

posted @ 2011-05-06 15:11  元某人  阅读(925)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3