ptarmigan
ptarmigan copied to clipboard
routing: takes many calculation time
commit 2179522d3d5eb39af37cd1b534a4a0f6169d5d68
routingに使用するデータが4万件程度でln_routing_calculate()
が20秒近くかかる。
再送のたびに行うため、送金全体が遅くなっている。
https://github.com/nayutaco/ptarmigan/blob/2179522d3d5eb39af37cd1b534a4a0f6169d5d68/ln/ln_routing.cpp#L469-L536
ここの部分に大半が費やされている。
ver_add()
?
graphをグローバル変数にし、ver_add()
を分離して先に行うように試作した。
ver_add()
によってgraphへvertexを先に登録することで高速化されることを期待したのだが、まったく効果が無かった(むしろ、先に登録する時間がかかることで増えている)。
起動時にgraphを作成する方法を修正。 起動時間が長くなるが、支払いは速くなった。
しかし、RAM上に持つためコストが高い。 psのRSSが227,356KiBだったので、この方法は厳しい。 もっとRAMが少ないライブラリか、省RAMな検索方式があるとよいのだが。
channel_updateを2週間くらいでpruneしてもよいような書き方をしているので、データを減らせないか。 あるいは、graphのデータを減らせないか。