node.jsのアドオン作成の練習として、先日書いたJavaScriptのlinked listをネイティブ実装に移植してみた。
https://github.com/paulownia/node-linkedlist
先日のJS実装と速度を比較した。リスト先頭への大量の要素追加にかかる時間(ms)を表に示す。
10000 | 50000 | 100000 | 200000 | |
---|---|---|---|---|
Linked List(JS) | 3 | 14 | 36 | 59 |
Linked List(native) | 2 | 10 | 19 | 36 |
C++で実装しなおしても1.5〜1.8倍程度しか高速化しない。v8が優秀なためJS実装でもかなり高速なこと、アドオン実装ではJavaScriptとC++ブリッジ部分でオーバーヘッドが大きい事などが原因だろう。元々nodeのアドオンは高速化ではなくOSのライブラリを呼ぶのが目的なのであまり期待しない方がよいだろう。