Avatar
Taketo Sano 2/4/2020 4:37 AM
お悩み相談させてください🙏 自作のグラフ構造を使った計算を行おうとしているのですが,絶望的に速度が出ず悩んでいます.扱う頂点の数はかなり多く(558,661),動的に辺を追加したり外したりする処理を行います.TimeProfiler を見るとほとんどが Set や Dictionary の変更にかかっているようです. 同等の処理をしているはずの C++ ライブラリだと一瞬で計算が終わるので,かなり悲しい気持ちです.もし改善のヒントなどあればご教示頂けると幸いです🙏 ↓ こちらの main.swift を実行すればすぐみられます. https://github.com/taketo1024/SwiftyMath-knots/tree/graph グラフ構造(Set や Dictionary を組み合わせたシンプルな struct ) https://github.com/taketo1024/SwiftyMath-knots/blob/graph/Sources/Sample/SimpleDirectedGraph.swift グラフ処理部分 https://github.com/taketo1024/SwiftyMath-knots/blob/graph/Sources/Sample/HFKCalculator.swift こちらが高速な C++ のライブラリ https://bitbucket.org/t3m/py_hfk/src/default/hfk_class.cpp C++ のライブラリの方は頂点を std::vector で,辺を std::list で持っているようです.