Posts written in 2007‒10

只要加一行,讓 IE 五倍速執行 JavaScript

給心急的讀者們

/*@cc_on _d=document;eval('var document=_d')@*/

解說

因為 document 是 window 的子物件,對 IE 來說,要使用 document ,必須經過 window ,而上面的方法是讓 document 成為一個獨立的物件,不必透過 window ,因此速度就提昇了。

這個方法也適用於其他子物件,以下是完整的加速法:

/*@cc_on
eval((function(props) {
  var code = [];
  for (var i = 0, l = props.length;i<l;i++){
    var prop = props[i];
    window['_'+prop]=window[prop];
    code.push(prop+'=_'+prop)
  }
  return 'var '+code.join(',');
})('document self top parent alert setInterval clearInterval setTimeout clearTimeout'.split(' ')));
@*/

但當然也只有使用到這些物件的時候效能會有所提昇,如果你的程式中用到這些物件的部份不多,便不會有這麼大的效果。

資料來源一行で IE の JavaScript を高速化する方法

後記

根據這個原理,我想 Super_Long_Really_Annoying_Enormous_Class_Names(); 應該也會比 Super.Long.Really.Annoying.Enormous.Class.Names(); 更快吧! XD 寫 JavaScript 時要注意不要建立太多子物件……

SlickSpeed

更新了我的 SlickSpeed 測試頁,加入 Ext JS 和 jQuery 1.2.1 一起測試。理論上我應該拿掉 jQuery 1.1.3.1 的,但是目前會來這一頁的人大部份都是為了看 1.1.3.1 與 1.1.4 的差別,所以暫時先保留著。

我還滿期待這次新增的 Ext JS ,因為 Dean 跟 Jack 的關係好像不是很好…… XD 以下是我的測試結果: Ext JS 在 Firefox 表現普通;在 Safari 僅次於 base2 和 Prototype.js ,但在 Safari 中大家都很快,所以差距都不大;在 IE7 則小勝 base2 ,但在 IE6 又小輸給 base2 。

所以讓我失望了…… Dean 的衛冕者寶座仍無人能撼動。

《天元突破グレンラガン》 #27

兩個螺旋星系插在另一個螺旋星系上面示意圖

最後大魔王竟然可以隨手把兩個螺旋星系像飛盤一樣丟出去,被主角避開後,這兩個螺旋星系竟然就插在另一個螺旋星系上面……

就算這是熱血機人動畫也太不合理了啊~ XD


 1