環境是node,別的系統配置沒意義 ,相對比對,實現乙個pow函式,然後和v8的比下,順帶試試各種優化效能的江湖傳說
function pow(x,e);
很眼熟,基本和c裡面差不多
然後本著遞迴不靠譜,先實現乙個用棧模擬遞迴的陣列實現
function pow(x,e)
else
if(i==2)
else
else }};
for(i=(m.length-1);i>0;i--)
return
m[0];
};
**量一下子上來,然後測試,大概就是給個時間間隔,中間跑很多次函式結果:
native:70,code1:11000;code2:13000
嗯,這是個假陣列實現,還不如遞迴,可見一般情況下,遞迴還是不錯的選擇,但是,如果再想下,思考點什麼邪術,就可以幹一波大事了
首先考慮一下,pow的指數值其實是侷限的,或者說大了也沒啥卵用,然後呢,這種二分對幹的情況,,不由得想起了二進位制,的確可以,細節略過,反正就是對比一下陣列模擬,來個二進位制模擬,這裡用了es6的位操作(c裡面很常見的套路),然後用了系統計算函式(罪過罪過,說不定就是靠這個函式優化的效能),然後有了下面版本
function
pow(x,e)
else
}return res ;
};
效果是:native:90,code3:1000
真是飛躍。。。。
接著實驗各種邪術江湖傳聞,比較靠譜的是:
避免全域性查詢,將res等變數宣告為全域性,大概慢兩倍或者更多
然後之前陣列實現時,將push換為索引,沒啥大的改變。
將內部var宣告為let,大概也是慢兩倍多,安全和效率會有衝突
而使用arguments來直接用實參比用形參訪問慢(要計算)
然後有些不靠譜(可能我說的不對):
明確迴圈終止條件,while比for(;;)好什麼的,,沒啥用
非同步,這個不考慮,沒啥用
然後,發現了乙個天大的秘密,用幾個函式一層層套,居然執行更快了,,,,不過3層左右就可以了,套個9層還是會變慢
然後還有if..eles 比switch ..case好,可能ie會好,不過因此變成了個逼格不錯的樣子
function
pow(x,e)
return res ;
};
果然搞個這個條件選擇就是感覺不一樣了,但其實也沒怎麼快 python呼叫v8 C 中使用v8
今天編譯了v8,現在v8編譯是依賴gyp是谷歌乙個用python寫的工作方便 管理,可以生成多種專案檔案。1.編譯v8 svn checkout v8 svn co build gyp gyp svn co third party cygwin svn co third party python 2...
v8引擎和v12引擎 深入V8引擎 AST 2
先宣告一下,這種長系列的大塊頭部落格只能保證盡可能的深入到每一行原始碼,有些 我不樂意深究就寫個注釋說明一下作用。另外,由於本地整理的比較好,部落格就隨心寫了。bool parseprogram parseinfo info,isolate isolate 所需要關心的核心 就是這些,非常簡單,pa...
csdn部落格的css樣式 v8
馬永佔,myz,mayongzhan csdn伺服器不行了,這次是對部落格上的頭像下手了,頭像被去掉,並且統計資訊也一起去掉,大快人心!特此去掉手動刪除統計資訊的 全部 如下 subscriptionlist csdnblog allwrap csdnblog sidebar csdnblog si...