Ruby's Louvre

每天学习一点点算法

导航

判定浏览器是支持JIT

这来源于一个非常现实的性能测试需求。要知道IE(除了刚诞生的IE9),其他出名的浏览器都支持JIT技术来提高代码的执行能力,那么我们进行性能测试时,通常会对某个函数的几个实现循环执行10000次来评估其优劣。但10000次有时对IE来说太多了,几乎不可能的计算量就把它down掉了,对于一些旧点的标准浏览器也是如此,因此这个循环次数不能死定为一个数量级。这个量化标准我就规定为浏览器是否支持JIT,是就让它循环数多一点,不是就少一点。不过怎么判定它是否支持呢?虽然过度优化,可能会带来一些神奇的bug,但它们也很快会被浏览器修正掉。唯一的办法就是到它们的官网查看它们是在哪个版本加入这支持了。

  (function(){
    //by 司徒正美 http://www.cnblogs.com/rubylouvre/
    this.dom = {};
    var ver =parseFloat(((/(?:rv\:|ari\/|sto\/)(\d+\.\d+(\.\d+)?)/.
      exec(navigator.userAgent) || [,0])[1]).toString().replace(/[^\d\.]/g, "").
      replace(/^(\d+\.\d+)(\.(\d+))?$/,"$1$3"));
    dom.jit = document.documentMode === 9 ||// IE 9+
    this.crypto && ver > 1.9 ||// firefox 3.5+(1.91)
    this.opera && this.opera.version()*1 >= 10.5 ||// opera10.50+
    navigator.vendor && ver >= 528 || !1 // safari 4+, chrome 2+

  })();

posted on 2010-09-20 09:01  司徒正美  阅读(1741)  评论(1编辑  收藏  举报