500Mのjsonデータを処理するとき、プログレスバーの最後が止まる現象があった。
良く調べると以下のような事らしい。
Rustのメソッドチェーンは、イテレータを使用している場合、遅延評価(lazy evaluation)を行います。これは、各メソッドが呼び出されたときにすぐに実行されるのではなく、最終的に消費されるときに一度に実行されることを意味します。したがって、メソッドチェーンの最後にfor_eachやcollectなどの消費メソッドが来ると、その時点で全ての処理が実行されます。このため、メソッドチェーンの最後に一度に多くの処理が集中することがあり、それがボトルネックになる可能性があります。以下のコードでは、for_eachを使って各行を処理していますが、inspectを使って都度処理するように変更してみます。
0 件のコメント:
コメントを投稿