次のコードがあるとします。
def findMinOpt(li: List[Option[Int]]): Option[Int] =
{
val listwithoutOptions = li.flatten
listwithoutOptions.reduceLeftOption(_ min _)
}
すべてのオプションを効果的に除外して新しいリストを作成し、最小値を返します。
このコードで見られる問題は、リストを 2 回処理することですが、実際には、キャッシュされていない 2 番目のリストが作成されるため、それよりも悪いことです。リストを一度だけ処理する慣用的な方法はありますか?
オプションの質問: ベンチマークはどのように実行しますか? 通常、OS はキャッシュ メカニズムを使用するため、テストを繰り返す間にそのキャッシュをクリアしたいと思います。それを行う方法はありますか?