200秒,可以做什么?——测测你的电脑精确计算能力
转帖 CSDN 算法版的一个帖子:<A href="http://topic.csdn.net/u/20071210/21/b30b831f-0099-48a8-bbbb-fc237ed593fd.html" target=_blank>200秒,可以做什么?——测测你的电脑精确计算能力</A><BR><BR>大家知道,CPU 的浮点计算能力可以用 Super PI 去测试,那么整型计算能力如何测试呢?<BR><BR>下面推荐一款软件——由 <A href="http://www.emath.ac.cn/" target=_blank>数学研发网</A> 出品的 HugeCalc V8.0.0.0,它有如下特点:<UL type=1>
<LI>全整型指令:不含一条浮点运算指令;
<LI>自动识别CPU型号,如是否支持多核?是否支持 SSE2 指令集?等等。并可自动调整算法参数优化;
<LI>可以自行修改配置档,从而可以有针对性的进行 DIY 测试。</LI></UL><BR>比如,四核的用户:可以自由设定仅用单核/双核、还是四核全部投入运算;是否采用 SSE2 指令集加速等。<BR><BR>它的测试时间精度达到了微秒级;并采用了多线程设计,用户可以随时终止测试。<BR><BR>以下是它在双核上的测试报告(更详尽的报告请见:<A href="http://www.emath.ac.cn/hugecalc/test_report.htm" target=_blank>http://www.emath.ac.cn/hugecalc/test_report.htm</A>):<BR>
<PRE>+-------------+-------------+-----------+-----------+------------+------------+-----------+
| n! | digits | A2-1 | A2-0 | A1-1 | A1-0 | A0-0 |
|-------------|-------------|-----------|-----------|------------|------------|-----------|
| 10,000! | 35,660 |0.004586 |0.004682 | 0.006145 | 0.006254 |0.007348 |
| 100,000! | 456,574 |0.074358 |0.081094 | 0.110150 | 0.121145 |0.333286 |
| 200,000! | 973,351 |0.159463 |0.179471 | 0.251844 | 0.280748 |1.026817 |
| 400,000! | 2,067,110 |0.372189 |0.408471 | 0.580490 | 0.649423 |3.142477 |
| 800,000! | 4,375,040 |0.857702 |0.934181 | 1.348855 | 1.526333 |9.304887 |
|1,000,000! | 5,565,709 |1.087945 |1.208318 | 1.781194 | 2.023373 | 13.692116 |
| 10,000,000! |65,657,060 | 14.922132 | 17.024912 |24.660277 |28.985707 | --------- |
| 20,000,000! | 137,334,715 | 30.775132 | 35.551279 |51.123602 |61.061514 | --------- |
| 40,000,000! | 286,710,625 | 67.570732 | 78.600010 | 112.555688 | 136.195050 | --------- |
+-------------+-------------+-----------+-----------+------------+------------+-----------+
+-------------+-------------+--------------+--------+
| n! | digits | B | C |
|-------------|-------------|--------------|--------|
| 10,000! | 35,660 | 2.168x10^-19 |0.095 |
| 100,000! | 456,574 | 0.047 |0.188 |
| 200,000! | 973,351 | 0.156 |0.234 |
| 400,000! | 2,067,110 | 0.36 |0.578 |
| 800,000! | 4,375,040 | 0.875 |1.391 |
|1,000,000! | 5,565,709 | 1.265 |0.891 |
| 10,000,000! |65,657,060 | 20.141 | 57.687 |
| 20,000,000! | 137,334,715 | 46.484 | ------ |
| 40,000,000! | 286,710,625 | 108.891 | ------ |
+-------------+-------------+--------------+--------+
CPU: AMD Athlon 64 X2 Dual Core Processor 4800+, 2.512GHz(201MHz x12.5), L1 Cache 64KB, L2 Cache 512KB
OS : Windows XP SP2
RAM: 2GB DDR2 - 800MHz
--------------------------------------------------------------------------------------------------------
A -- HugeCalc V8.0.0.0
A2-1 --> HugeCalc.ini: NumOfCores = 2; SSE2Support = 1; (测试双核、SSE2指令加速)
A2-0 --> HugeCalc.ini: NumOfCores = 2; SSE2Support = 0; (测试双核、ALU 指令加速)
A1-1 --> HugeCalc.ini: NumOfCores = 1; SSE2Support = 1; (测试单核、SSE2指令加速)
A1-0 --> HugeCalc.ini: NumOfCores = 1; SSE2Support = 0; (测试单核、ALU 指令加速)
A0-0 --> HugeCalc.ini: NumOfCores = 0; SSE2Support = 0; (测试无高级算法参与)
B -- Mathematica V6.0.1.0
C -- Maple V11.0 ( February 17 2007, Build ID 277223 )
--------------------------------------------------------------------------------------------------------
</PRE><BR>
<P align=center><A href="http://www.emath.ac.cn/hugecalc" target=_blank><IMG onclick=if(vouching(this.src)){zoom(this);} alt="" src="http://www.emath.ac.cn/image/ui_HugeCalc.gif" onload="attachimg(this, 'load')" border=0></A></P><BR><BR>该软件官方下载地址:<A href="http://www.emath.ac.cn/software.htm#HugeCalc" target=_blank>http://www.emath.ac.cn/software.htm#HugeCalc</A><BR>天空下载地址为:<A href="http://www.skycn.com/soft/16254.html" target=_blank>http://www.skycn.com/soft/16254.html</A><BR>华军下载地址为:<A href="http://www.onlinedown.net/soft/29009.htm" target=_blank>http://www.onlinedown.net/soft/29009.htm</A><BR>(无毒/无插件/绿色解压安装即可)<BR><BR>本人开发这套软件,历经十余年,曾先后四次在 CSDN 上摆擂台,具体可见“算法论道”栏目:<A href="http://algo.emath.ac.cn/" target=_blank>http://algo.emath.ac.cn/</A><BR>为了全面了解该套软件在不同配置机器上的表现能力,特发此贴。<BR>希望大家将真实计算时间的记录好并发布到这里,以供今后参考。<BR>(如果正好装有 Mathematica/Maple/GMP 等专业软件的用户,不妨一并对比测试一下,供大家参考参考)<BR><BR>测试程序可用里面的 Factorial.exe,也可直接用 HugeCalc.exe(可在输出栏中选"---"以关闭输出)。<BR>为确保测试的准确性、可重复性,建议测试时关闭其它应用程序。<BR>
首位四核(或以上)测试者可获免费注册
如果你有四核(或以上)CPU,那么仅需占用不到十分钟时间即可获得免费注册HugeCalc的机会。为了全面测试该软件对多核的支持程度,请依次测试:A4-1/A4-0 /A3-1/A3-0 /A2-1/A2-0 /A1-1/A1-0 /A0-0/
其中“An-s”表示“在 HugeCalc.ini 文件中设定: NumOfCores = n SSE2Support = s”后进行的测试结果。 终于有四核上的测试数据了,请见:4核测试结果
还有一组数据是 GMP vs. HugeCalc 在纯粹的大数乘法算法的大比武,也非常有参考价值:http://bbs.emath.ac.cn/viewthread.php?tid=208&page=2&fromuid=8#pid1613
非常感谢本社区 风云剑 朋友的测试! Haskell计算100000!消耗41秒
Core 2 Xeon 1.6G(双核) 1G win2003
呵呵
看来还是有点慢啊
不过是用的最简单的定义
let fact n = foldl1 (*)
不知道更高效的定义如何写
呵呵 不错啦,我Windows下的Maxima干脆就计算了半分钟左右报错了:
(%i1) 100000!;
Maxima encountered a Lisp error: Error in FORMAT : Value stack overflow.Automatically continuing.To reenable the Lisp debugger set *debugger-hook* to nil. :)
不知道PARI如何
Haskell的计算内核是GMP 呵呵,PARI在我的笔记本上算100000!只要10秒:b: :)
10秒对41秒也没多大优势 import Time
factl :: Integer -> Integer
factl n = product
main = do
t <- getClockTime
let f = factl 100000
print (mod f (2^31-1))
print (t)
t <- getClockTime
print t
详细信息出来了
光计算是27秒
带输出100000!是55秒 因为haskell是惰性计算
所以必须引起其对100000!的计算要求
否则不进行任何输出的时候
恐怕时间是0
呵呵
这种研究性质的语言, 如果在时间上减少到1秒
还是很优化的