Panda Noir

JavaScript の限界を究めるブログです。

処理速度が300倍に!並列処理ライブラリParallel.jsの実力

処理速度がホントに約300倍になります。詐欺じゃありません。

Parallel.jsとは

Parallel.jsとはJavascriptで並列処理をできるようにしてくれるライブラリです。このライブラリはWeb WorkersというJavascriptで並列処理をする技術を裏で使っています。というかWeb Workersを使いやすくするライブラリのようなものです。ですのでブラウザ依存となっています。

300倍をだしたソース

したのコードを試しました。Parallelを使った方(並列)は平均1ミリ秒(平均というかすべて1ミリ秒だったので実際はさらに短い可能性が高いです)、Parallelなし(逐次)は平均298ミリ秒かかりました。

$(function(){
    function paint(i){
        $("#div"+i).html(i);
    }
    var divs=10000;
    function setup(){
        $("body").html("");
        var frag=document.createDocumentFragment();
        for(var i=0;i<divs;i++){
            $("<div>").attr("id","div"+i).appendTo(frag);
        }
        $("body").append(frag)
    }
    setup();
    var start=new Date();
    p=new Parallel(divs);
    p.spawn(function(d){
        var res=[];
        for(var i=0;i<d;i++){
            res.push(i);
        }
        return res;
    }).then(paint);
    console.log((new Date)-start)
    setup();
    var start=new Date();
    for(var i=0;i<divs;i++){
        paint(i);
    }
    console.log((new Date)-start)
});

終わりに

クロスブラウザではありませんが、この300倍はとても魅力的ですよね。並列処理の方が早い、計算速度を上げたいといったときには試してみてはいかがですか?