JavaScript可以和C++一樣快

如果看了《為V8優(yōu)化JavaScript》這篇文章,就會了解到v8設(shè)計的獨到之處,大家都知道v8快妇多,但是v8有多快呢,我們今天就來看看燕侠。
實際上v8竟然在執(zhí)行算法的時候和C++差不多快者祖,我們通過一個算法來測試一下。
首先我們看一下計算質(zhì)數(shù)的算法绢彤。

JavaScript版本

function Primes() {
    this.prime_count = 0;
    this.primes = new Array(25000);
    this.getPrimeCount = function() {
        return this.prime_count;
    }
    this.getPrime = function(i) {
        return this.primes[i];
    }
    this.addPrime = function(i) {
        this.primes[this.prime_count++] = i;
    }

    this.isPrimeDivisible = function(candidate) {
        for (var i = 1; i < this.prime_count; ++i) {
            var current_prime = this.primes[i];
            if (current_prime * current_prime > candidate) {
                return false;
            }
            if ((candidate % current_prime) == 0) return true;
        }
        return false;
    }
};

function main() {
    p = new Primes();
    var c = 1;
    while (p.getPrimeCount() < 25000) {
        if (!p.isPrimeDivisible(c)) {
            p.addPrime(c);
        }
        c++;
    }
    print(p.getPrime(p.getPrimeCount() - 1));
}

main();

C++版本

#include <stdio.h>
class Primes {
public:
     Primes() {
         prime_count = 0;
    }
    int getPrimeCount() const { return prime_count; }
    int getPrime(int i) const { return primes[i]; }
    void addPrime(int i) { primes[prime_count++] = i; }

    bool isDivisibe(int i, int by) { return (i % by) == 0; }

    bool isPrimeDivisible(int candidate) {
        for (int i = 1; i < prime_count; ++i) {
            int current_prime = primes[i];
            if (current_prime * current_prime > candidate) {
                return false;
            }
            if (isDivisibe(candidate, primes[i])) return true;
        }
        return false;
    }

private:
    volatile int prime_count;
    volatile int primes[25000];
};

int main() {
    Primes p;
    int c = 1;
    while (p.getPrimeCount() < 25000) {
        if (!p.isPrimeDivisible(c)) {
            p.addPrime(c);
        }
        c++;
    }
    printf("%d\n", p.getPrime(p.getPrimeCount() - 1));
}

這兩個算法都不難看懂七问,我們測試一下性能。使用linux下的time命令可以方便的測試茫舶。使用windows的朋友可以使用mobaxterm械巡,這個工具可以跑大部分Linux命令。

  • 首先我們測試一下js


    v8計算js

    看到?jīng)]有饶氏,0.34s

  • 在測試一下CPP代碼

Paste_Image.png

結(jié)論

雖然cpp還是比js快樂4~10倍讥耗,但是這是visual studio 2015編譯器編譯的版本,相信在Linux上g++應(yīng)該和v8的差距比這個小的疹启,而且我用的d8是3.29.88版本的古程,最新的肯定比這快。所以我們的結(jié)論是皮仁,v8真的很快籍琳,都接近c++啦菲宴。

不清楚d8如何編譯出來贷祈,可以看看《如何用visual studio編譯v8》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市喝峦,隨后出現(xiàn)的幾起案子势誊,更是在濱河造成了極大的恐慌,老刑警劉巖谣蠢,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粟耻,死亡現(xiàn)場離奇詭異,居然都是意外死亡眉踱,警方通過查閱死者的電腦和手機挤忙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谈喳,“玉大人册烈,你說我怎么就攤上這事⌒銮荩” “怎么了赏僧?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵大猛,是天一觀的道長。 經(jīng)常有香客問我淀零,道長挽绩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任驾中,我火速辦了婚禮唉堪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肩民。我一直安慰自己巨坊,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布此改。 她就那樣靜靜地躺著趾撵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪共啃。 梳的紋絲不亂的頭發(fā)上占调,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音移剪,去河邊找鬼究珊。 笑死,一個胖子當(dāng)著我的面吹牛纵苛,可吹牛的內(nèi)容都是我干的剿涮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼攻人,長吁一口氣:“原來是場噩夢啊……” “哼取试!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起怀吻,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤瞬浓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蓬坡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猿棉,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年屑咳,在試婚紗的時候發(fā)現(xiàn)自己被綠了萨赁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡兆龙,死狀恐怖杖爽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤掂林,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布臣缀,位于F島的核電站,受9級特大地震影響泻帮,放射性物質(zhì)發(fā)生泄漏精置。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一锣杂、第九天 我趴在偏房一處隱蔽的房頂上張望脂倦。 院中可真熱鬧,春花似錦元莫、人聲如沸赖阻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽火欧。三九已至,卻和暖如春茎截,著一層夾襖步出監(jiān)牢的瞬間苇侵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工企锌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留榆浓,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓撕攒,卻偏偏與公主長得像陡鹃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子抖坪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容