bir öykünen Proje Euler sorunlar nadir değildir desen eşdeğer bir şey gibi görünüyor:bir scala ParStream
f bilinmeyen bir noktaya kadar olumlu değerleri döndürür bazı pahalı-to-bilgi işlem fonksiyonu olanStream.from(1).map(f).takeWhile((_>0)).foldLeft(0L)(_+_)
ve Bundan sonra sıfırlar döndürür.
Özellikle Scala'nın paralel koleksiyonları ve .par
'un işleri kolaylaştırması gibi şeyleri paralel hale getirmek istiyorum. Ama bir ParStream yokluğunda, iyi ben ile geldim: çok şık görünüyor ve BATCH
değerin seçimine duyarlıdır (ancak üzerinde x4 hız artışı sağlayabilir gelmez
val BATCH=1024
Stream.from(1,BATCH).flatMap(
i=>(i until i+BATCH).par.map(f)
).takeWhile((_>0)).foldLeft(0L)(_+_)
benim dört çekirdekli).
Aynı sonuca ulaşmanın daha temiz yolları için önerileriniz var mı?
Verdiğiniz örnekler, eşdeğer değildir: örneğin, "val f = 15 - (_: Int)" ve "BATCH = 10" ile ilk 105 ve ikinci 95 –
@ Luigi: Bu nedenle "ile pozitif değerlerini döndürür ... ve bundan sonra sıfırlar döndürür". örneğin f (x) = 0 max (15-x) ile çalışır. – timday