EDA365电子工程师网
标题:
skill用蒙特卡罗法算圆周率(据说可以测性能)
[打印本页]
作者:
chrysalis
时间:
2015-12-12 14:14
标题:
skill用蒙特卡罗法算圆周率(据说可以测性能)
本帖最后由 chrysalis 于 2015-12-14 08:39 编辑
来源于这里:
http://www.zhihu.com/question/27768721
提问的人表示,vba要570ms,而python要7秒。
我把vba的程序拿到我电脑上跑了下,大概410ms,我就估摸着用skill跑大概要多久,于是把这个算法移植到了skill上面。
代码:
axlCmdRegister("test3" 'test3)
defun(test3 ()
prog((l_time x_rand1 x_rand2 x_radius x_loop x_count x_rand1Opp x_rand2Opp f_pi)
l_time = measureTime(
x_radius = 100
x_loop = 2500000
x_count = 0
for(i 1 x_loop
x_rand1 = random(x_radius)
x_rand2 = random(x_radius)
when((x_rand1 ** 2 + x_rand2 ** 2) <= (x_radius ** 2)
x_count = x_count + 1
);when
x_rand1Opp = x_radius - x_rand1
x_rand2Opp = x_radius - x_rand2
when((x_rand1Opp ** 2 + x_rand2Opp ** 2) <= (x_radius ** 2)
x_count = x_count + 1
);when
);for
f_pi = x_count / float(x_loop) * 2
)
printf("%f time:%f\n", f_pi nth(2 l_time))
);prog
)
复制代码
实际跑了一下,大概要3秒左右,比我想象中快(我以为会和python差不多),看来skill优化还是挺好的。(或许是Lisp的优越性?)
-----
在自己的电脑上跑了下python代码,要4.24秒。这么一看skill也没比python快到哪儿去……
欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/)
Powered by Discuz! X3.2