Warning: Undefined global variable $debug in /var/www/ourcoders/tiny4cocoa/application/controllers/baseController.php on line 124
ccQpein 2019-11-23 00:00:00 发布的技术动态 - OurCoders (我们程序员)
ccQpein
2019-11-23 00:00:00 发布
昨晚有人发我了一个题,用lisp和rust 写完之后发现,随着输入的变大(假设是k),里面的另一个参数(假设是m)也会快速的上涨,m的边界是从1 到无限,直到找到然后就退出,感觉特别适合lazy,所以打算用Haskell 再写了一遍。

既然又是多个版本,那当然得拿出来比一比。随着输入k的增加,m也在更快的上涨,所以整个遍历的次数也随着m上涨。而且算法都是一摸一样的。

在Haskell-mode 的repl 里,k1(已经有点大了) 的时候就一卡一卡的,我还觉得咋回事?Haskell 性能出问题了?接下来编译到二进制文件的时候优化等级参数给-O2,耗时在0.045(所以卡顿完全是REPL 的锅),同样的输入rust 不给优化参数耗时0.07 左右,common lisp 没有静态优化,0.08.

然后我把k 增大到k2,Haskell -O2 耗时0.07,rust 在0.11 左右,CL 在0.15左右。然后!我突然想起来rust 自己也带一个优化参数的,默认是2,我手动加到3,接着就翱翔起来了,耗时稳定在0.02秒。