BenScala desen eşleştirme performans
val chars: Array[Char] = some array
def fun1(idx:Int):Int = {
some code here (including the stop condition)
val c = chars(idx)
c match{
case '(' => fun1(idx+1)
case _ => fun1(idx+1)
}
}
Bu kod 4'tür (bu sadece dizi geçişi var bu sürümü basitleştirilmiş ve herhangi ödev ayrıntılarını içermez) Bu sorunla karşılaştı Ben eşleşen deseni değişiyor yapıyorum Tüm zamanlar
def fun2(idx: Int):Int = {
some code here (including the stop condition)
val c = chars(idx)
(c == '(') match{
case true => fun2(idx+1)
case _ => fun2(idx+1)
}
}
daha yavaş
(ı ScalMeter kullanarak çalıştırıyorum yüzden istatistiklerde inanıyorum).Bu davranışı herkes açıklayabilir mi?
Bunun geçerli kıyaslama yöntemine yakın bir şey olduğundan şüphe duyarım. ScalaMeter, sonuçlar kararlı hale gelene kadar onlarca ısınmayı sever. Aynı verileri kullanarak test bile etmiyorsunuz. –
Evet, aynı veriler değil. Ama koşular arasında oldukça yakın sonuçlar alıyorum. Stddev son derece düşüktür, bu da aynı veriyi kullanırsam çok fazla bir fark görmeyeceğimi gösterir. Yanıtta da belirtildiği gibi, ben de ısınma çalışmaları yaptım, bu yüzden "geçersiz" bulduğunuz bu kıyaslamadan emin değilsiniz. Bulgularımın yanında duruyorum ve yapabiliyorsanız, onları kesin olarak (ve tekrarlanabilir şekilde) onaylamamaya itiraz ediyorum. – Dima
İşlevlerinizi ödünç almak için, burada scala metrelik bir ölçüt var: https://gist.github.com/lukaszwawrzyk/a2505d5b3083bb72de51b8445fbb9a76 "char time: 13.172258374999998 ms' ve" bool time: 4.739404575 ms'. Endeksli bir sekme sonuçları gerçekten daha yakın fakat eşit değil (95 saniye vs 80 saniye) –