2024年6月12日水曜日

rustでデカいデータを扱う時の注意

500Mのjsonデータを処理するとき、プログレスバーの最後が止まる現象があった。


良く調べると以下のような事らしい。


Rustのメソッドチェーンは、イテレータを使用している場合、遅延評価(lazy evaluation)を行います。これは、各メソッドが呼び出されたときにすぐに実行されるのではなく、最終的に消費されるときに一度に実行されることを意味します。したがって、メソッドチェーンの最後にfor_eachcollectなどの消費メソッドが来ると、その時点で全ての処理が実行されます
のため、メソッドチェーンの最後に一度に多くの処理が集中することがあり、それがボトルネックになる可能性があります
下のコードでは、for_eachを使って各行を処理していますが、inspectを使って都度処理するように変更してみます

0 件のコメント:

コメントを投稿