nodeモジュールとしてC++でLinked listを実装

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実装でもかなり高速なこと、アドオン実装ではJavaScriptC++ブリッジ部分でオーバーヘッドが大きい事などが原因だろう。元々nodeのアドオンは高速化ではなくOSのライブラリを呼ぶのが目的なのであまり期待しない方がよいだろう。