I for-comprehensions scala içinde verimliliği hakkında bir soru var.Performans için-anlama scala
Aşağıdaki kod, perma I 'izlenerek aşağıdaki kodu değiştirildi yaklaşık 550 elemanlar
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}
listesidir çalıştırmak için yaklaşık 45 saniye sürer, aynı perma listesi
3 saniyede ranperm = some list
for{
perm <- perms.withFilter(_.size > 0)
word <- somefunction(perm) //expensive operation
sentence <- somefunction1(perm) //very expensive operation
} yield { word::sentence}
Performanstaki farkın Scala'da temkinli değerlendirme ile bir ilgisi var mı? İlk snippet'inde
Cevabınız için teşekkürler. Senin değinmek istediğin noktayı anlıyorum. Şekerleme işlemiyle ilgili bir takip sorumlum var. İlk deyim, perms.withFilter (_. Size> 0) .flatMap {} 've perms.withFilter (_. Size> 0) .foreach {}' olarak değil neden yazılır? – Piyush
"foreach", "Unit" i döndürür, böylece sonuçlarınız kaybolacaktır. – drexin
Ah, anlıyorum. Bu nedenle, 'xx-y1, y <-y1, z <-z1} verimi (x ::: y ::: z) için aşağıdaki anlama-anlama ları' x1.flatmap {x => y1 'e çevirir. flatmap {y => z1.map {z => x :: y :: z}}} '? – Piyush