RBST
Randomized Binary Search Tree
順序付き多重集合は C++ の multiset などを用いることで高速に処理することができます。
と書かれていたため、C++のmultisetに相当するものはPythonだと何?と話題になった
自前ライブラリとして持っておくといいのでは…という気持ちになった
ノードをオブジェクトとして作ってるような実装は全般的に筋悪
オブジェクトの生成コストが高いので。
配列で実装してnumbaでコンパイルする方針で作る
--- 開発
C++実装をPythonに移植した
フェニック木での実装 4.83sec
RBSTでの実装 105.47sec
20倍遅い
クラスを取り除く
67.01sec
6割ほど速くなった
10.13sec
リストでの逐次追加をnp.arrayでの一括アロケーションに変えた
4.60sec