Scala用于理解性能
发布时间:2020-12-16 09:25:43 所属栏目:安全 来源:网络整理
导读:为什么是 for ( a - 1 to 1000; b - 1 to 1000 - a; c - 1 to 1000 - a - b; if (a * a + b * b == c * c a + b + c == 1000)) println((a,b,c,a * b * c)) 266毫秒 慢一点: for (a - 1 to 1000) for (b - 1 to 1000 - a) for (c - 1 to 1000 - a - b) if (
为什么是
for ( a <- 1 to 1000; b <- 1 to 1000 - a; c <- 1 to 1000 - a - b; if (a * a + b * b == c * c && a + b + c == 1000) ) println((a,b,c,a * b * c)) 266毫秒 慢一点: for (a <- 1 to 1000) for (b <- 1 to 1000 - a) for (c <- 1 to 1000 - a - b) if (a * a + b * b == c * c) if (a + b + c == 1000) println((a,a * b * c)) 62毫秒 如果我理解正确,这应该是一样的吗? 处理答案后的解决方案 for ( a <- 1 to 1000; b <- 1 to (1000 - a) ) { val c = (1000 - a - b) if (a * a + b * b == c * c) println((a,a * b * c)) } 9毫秒 解决方法
你的理解是错误的.
当条件在循环体中时会发生这种情况: // this for(x <- coll) if(condition) doSomething // will translate to coll.foreach{ x => if(condition) doSomething } 与条件在发电机本身时相反: // this for(x <- coll if(condition)) dosomething // will translate to coll.withFilter(x => condition).foreach{ x => dosomething } 您可以查看The Scala Language Speci?cation 6.16以获取更多详细信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |