给定以下代码:
def findMinOpt(li: List[Option[Int]]): Option[Int] =
{
val listwithoutOptions = li.flatten
listwithoutOptions.reduceLeftOption(_ min _)
}
它过滤掉所有选项,有效地创建一个新列表,然后返回最小值。
我在这段代码中看到的问题是它两次处理一个列表,但实际上比创建第二个未缓存的列表更糟糕。是否有一种只处理一次列表的惯用方式?
可选问题:如何执行基准测试?通常操作系统使用缓存机制,所以在重复测试之间我想清除缓存。有没有办法做到这一点?