-
Notifications
You must be signed in to change notification settings - Fork 200
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve parallel processing (並列処理の高速化) #479
Comments
MESSAGEはbtreemapからhashmapに変更すると、timelineの処理のパフォーマンスに影響するかもしれないので、よくない。 Btreeの並列はskiplistアルゴリズムらしいけど、 https://docs.rs/skiplist/0.2.10/skiplist/skipmap/struct.SkipMap.html タイムラインの実装など私がわかってないので、コード読んだり、調査が必要。 |
jamesさんからの意見をメモしておく。 ロックを使わないで、
|
なんか、ここのissueを見ると、並列HashMapでも良いような気がしてきました。 |
skipmapは、ちゃんと使えるライブラリが断念。(no_stdだったり、ライセンスが無かったり、開発途中だったろ) 並列hashmapはお試し実装中ですが、skipmapより比較的コードの修正量が少ないだけであって、結構修正しなくてはいけない(Rust難しい。何もわからない) |
DashMapという並列HashMapを実装してみると、最新ルールを使って、ザックさんから前にもらった2GBのevtxが 00:17:28.143 -> 00:15:38.189 になりました。 パソコンのスペックとして、memory:8GB, 8コア です。 コードが汚いので、きれいにしてから、プルリクします。 |
ありがとうございます! |
並列HashMapを導入してみようかと思っています。
tokioで並列化されていますが、ただのロックだと、書き込み時にシリアライズ化されてしまうので、遅くなるようです。
並列HashMapの中身が巧妙になっており、2スレッドから同時アクセスが可能で、理論的に性能が2倍になったりするそうです。
仕組みは、hashmap全体をロックしてしまうと一度しか書き込めないので、セグメントごとにロックをして、複数スレッドから書き込めるようにするらしいです。
https://docs.rs/chashmap/latest/chashmap/
やってみて、あんまり変わらなかったら、取り込まない感じで、ちょっとやってみます。
The text was updated successfully, but these errors were encountered: