毎日プログラミング奮闘

日々進化するプログラミングの学習ブログ

JavaScriptとC++のクイックソート速度比較

速度比較

C++の方が圧勝なはず。。でもどうなんだろう?? 比較してみよう!といった感じ。

実験内容

1000個のランダムな数字に対してクイックソートを行う。それを10回した平均スピードを求める。 それで、1〜4を比較してみる。

  1. JavaScript の array.sort
  2. JavaScriptクイックソート
  3. JavaScriptC++ クイックソート
  4. C++ クイックソート

PCスペック

MacBook Pro(2020春)
f:id:naotaka0608:20200811144339p:plain:w300

実行

$ node index.js

===== array.sort =====
Rap:  289 micro sec
Rap:  264 micro sec
Rap:  269 micro sec
Rap:  271 micro sec
Rap:  423 micro sec
Rap:  283 micro sec
Rap:  181 micro sec
Rap:  180 micro sec
Rap:  179 micro sec
Rap:  177 micro sec
Avg:  283.2 micro sec

===== JavaSctipt Quicksort =====
Rap:  659 micro sec
Rap:  1179 micro sec
Rap:  573 micro sec
Rap:  214 micro sec
Rap:  68 micro sec
Rap:  65 micro sec
Rap:  66 micro sec
Rap:  66 micro sec
Rap:  64 micro sec
Rap:  68 micro sec
Avg:  333.5 micro sec

===== Node -> C++ quicksort =====
Rap:  216 micro sec
Rap:  186 micro sec
Rap:  189 micro sec
Rap:  192 micro sec
Rap:  192 micro sec
Rap:  185 micro sec
Rap:  188 micro sec
Rap:  183 micro sec
Rap:  187 micro sec
Rap:  204 micro sec
Avg:  219.3 micro sec

===== C++ quicksort =====
Rap:  38 micro sec
Rap:  36 micro sec
Rap:  39 micro sec
Rap:  39 micro sec
Rap:  38 micro sec
Rap:  36 micro sec
Rap:  36 micro sec
Rap:  38 micro sec
Rap:  38 micro sec
Rap:  38 micro sec
Avg:  37.6 micro sec

結果

4番目のC++圧勝!
3番目のNode→C++は受け渡しで時間かかってそう。4番目から考えて、受け渡しに180 micro sec くらい!?
2番目のJavaScriptクイックソートは前半遅く、後半が速い。1回目だけであれば、スクリプト言語だから?と言えそうだけどなんでだろう?? 1番目もちょっと遅い感じかな。

今回使ったプログラム

GitHub - naotaka0608/node-cplus-qsort