我有一个关于scala中for-comprehension效率的问题.
当perm是大约550个元素的列表时,以下代码大约需要45秒
perm = some list
for{
perm <- perms.withFilter(_.size > 0)
wordList = somefunction(perm) //expensive operation, wordlist is a list of strings
sentenceList = somefunction1(perm) //very expensive operation, sentenceList is a list of list of strings
word <- wordList
sentence <- sentenceList
} yield { word::sentence}
Run Code Online (Sandbox Code Playgroud)
当我将以下代码更改为以下代码时,它使用相同的烫发列表在3秒内运行
perm = some list
for{
perm <- perms.withFilter(_.size > 0)
word <- somefunction(perm) //expensive operation
sentence <- somefunction1(perm) //very expensive operation
} yield { word::sentence}
Run Code Online (Sandbox Code Playgroud)
性能的差异是否与Scala中的延迟评估有关?
twitter finagle库是否自行进行DNS缓存?我问这个是因为我们删除了vip背后的一些主机,但他们仍然收到了我们客户的请求.
如果有这样的缓存,我该如何为它设置超时?