这是非常简单的Haskell代码,用于查找满足毕达哥拉斯定理的1到200的所有毕达哥拉斯整数X ^ 2 = Y ^ 2 + Z ^ 2
哈斯克尔:
let l = [1..200]
let pythagoras = [ x | x <- l, y <- l, z <- l, x^2 == y^2 + z^2]
Run Code Online (Sandbox Code Playgroud)
完成它需要24.1秒,
Swift:使用标准循环 0.05秒
C:使用标准循环 0.022秒
我测量运行的Haskell代码0.03 seconds,让我相信你已经在解释器(用于开发,而不是高性能执行)中运行它,而不是编译代码.此外,您可能将类型默认为Integer而不是使用机器Int值.
tommd@HalfAndHalf /tmp% ghc -O2 t.hs && time ./t >/dev/null
[1 of 1] Compiling Main ( t.hs, t.o )
Linking t ...
./t > /dev/null 0.03s user 0.00s system 87% cpu 0.040 total
tommd@HalfAndHalf /tmp% cat t.hs
main :: IO ()
main = do
let l = [1..200] :: [Int]
let pythagoras = [ x | x <- l, y <- l, z <- l, x^2 == y^2 + z^2]
print pythagoras
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |