kokoax / mpdart

This is mpd client ono GUI. Display music with cover art.
0 stars 0 forks source link

音楽データをRedisに入れる時の並列化に関するベンチマーク #6

Closed kokoax closed 6 years ago

kokoax commented 6 years ago

refer: #5 主に二箇所を並列化できると考えており、その箇所は、 https://github.com/kokoax/mpdart/commit/e2e9868e44e0f4b98aa33e0b769a7cab569d2baa#commitcomment-25377254 : async1 https://github.com/kokoax/mpdart/commit/e2e9868e44e0f4b98aa33e0b769a7cab569d2baa#commitcomment-25377295 : async2 の二箇所である. いずれを使った場合と使わなかった場合、両方使った場合使わなかった場合を速度検証してみた.

音楽データ数(曲数): 2312 取得タグ数: 9

async2
並列化しない 並列化する
async1 並列化しない 3282961 2358568
並列化する 1177202 1179228
kokoax commented 6 years ago

async1は音楽データが増えれば増えるほど高速化が狙えるが、並列プロセスも死ぬほど増えるのでそのままは無理(1万曲データあると最大1万のプロセスが立ち上がる)

async2は、取り出すタグ数に依存するので、同時にはそんなに並列処理をしない。今は9個並列に動作するけど、逆に意味有るのかなと思ってベンチ取ったけど意外と効果があった.

async1とasync2を両方同時に実行してみると意外と速度がでなかった。 非同期でプロセスを立ち上げていて、かつ、async1内で、async2が実行されるのでメインプロセス内から見ると、async1プロセスを立ち上げる時間しかかからないためだと考えられる。

上記の結果から、async1を取り入れるのは難しそうなので、とりあえず、async2を取り入れようと思う. もし、何かアイディアがでたら頑張ろう