龙之梦工作室
LOGO

技术文章


(SCI) Parallel Algorithm for Wireless Data Compression and Encryption   (SCI) Fast Algorithm of Truncated BWT for Data Compression of Sensors   Dr. Qin Jiancheng   龙之梦助力肇庆教育网云计算   Dr. Zhou Yousheng   Dr. Bai Yuan   龙之梦工作室加盟华南理工学术团队   [软件下载] ComZip超级压缩机免费版下载   继续潜行,龙之梦工作室技术研发又一年   [软件交易] “雅典娜”网页密码锁在线购买   [软件交易] Super Prime超级质数机在线购买   [软件交易] ComZip超级压缩机在线购买   [信息安全] “风语者”高强度加密技术   [信息安全] 多层纵深防御体系结构   [合著] 专利:安全事件检测方法及装置  

[原创] 更快、更高、更强——Super Prime超级质数机

[ 2007-10-15 12:16:32 ]

  引言/提要:更快、更高、更强,是奥林匹克竞赛精神的精髓,而龙之梦工作室的核心成员,作为奥林匹克信息学(计算机)竞赛选手,在技术研发的过程中同样秉承了这种精神,不断地精益求精,力求完美。这决不是由商业利益驱使,而是一种信念,一种奥林匹克的信念。

  关键词:Super Prime,性能测试,双核,并行计算,质数,奥林匹克,核心技术

Super Prime 超级质数机

 一、更快、更高、更强——奥林匹克精神在软件中的体现
 二、参考机的软硬件配置、测试成绩及讲解
 三、优化、优化、优化——程序员的基本功训练
 四、多个测试程序、测试方法的不同侧重点


 一、更快、更高、更强——奥林匹克精神在软件中的体现

  更快、更高、更强,是奥林匹克竞赛精神的精髓,而龙之梦工作室的核心成员,作为奥林匹克信息学(计算机)竞赛选手,在技术研发的过程中同样秉承了这种精神,不断地精益求精,力求完美。这决不是由商业利益驱使,而是一种信念,一种奥林匹克的信念。
  更快——软件速度更快,把电脑硬件的性能潜力,淋漓尽致地发挥到极限。
  更高——软件质量更高,努力杜绝一切缺陷和出错,使软件能够无故障地长期运行。
  更强——软件功能更强,尽可能满足用户的各种需要,让强大的软件成为有力的工具。
  由龙之梦工作室自主开发出来的Super Prime超级质数机,正是这种奥林匹克精神的一个体现。先进的硬件,赋予电脑强劲的躯壳,龙之梦工作室的软件,则要赋予电脑强悍的灵魂。
  要想下载本软件的免费版,请到华军软件园,或者到龙之梦工作室网站的“软件下载”栏目。点击此处下载

  Super Prime超级质数机,既是一个用于测试电脑性能的工具软件,同时又是一个快速求大质数的工具软件。
  对于广大电脑用户,Super Prime可以作为一款测试软件,测试一下电脑跑得有多快。而对于一些涉及信息安全核心算法的专业用户,Super Prime则有着更深一层的作用。
  在加密算法、数字签名、报文摘要、安全认证等方面,大质数都具有重要的价值。当前版本的Super Prime,能够快速生成大量的64位二进制大质数,供应给各种用途的专业用户。
  如果您是信息安全数学算法方面的专家,拥有性能卓越的超级计算机,或许会觉得64位的质数仍然太“小”了,安全性不够。您用超级计算机可以轻松获得千位以上的大质数,并且有基于数学概率的伪质数求解算法,比这个经典求质数算法快速得多。
  但请记住,这是用普通的廉价PC电脑求大批量64位质数,能够把指定区间内的所有质数,快速地、一个不漏地搜索出来。而不是求解一个两个很大的数字,那些概率上可能是质数,也可能不是质数的东西。

 二、参考机的软硬件配置、测试成绩及讲解

  作为一款性能测试软件,Super Prime对电脑硬件的性能具有相当高的宽容度。从最旧的80386电脑,到新的64位双核PC,以至多CPU服务器,只要能够运行Windows 95及以上版本的操作系统,就可以用本软件进行测试。当然,性能越好的电脑运行得越快。
  而且,即使同样是最新配置的电脑,1GB内存和2GB内存都能体现出明显的性能差别。这直接表明,快速求大质数运算是非常消耗电脑资源的。
  在此,我们给出两台普通PC电脑(A机、B机)作为参考机器,看看它跑Super Prime的速度。您可以作个比较,看看自己的电脑有多快。

  参考机的软硬件配置:
A机:
 CPU:AMD Athlon XP 2000+
 主板:升技 KD7 VIA KT400芯片组
 内存:KingMax 1GB DDR 400MHz
 硬盘:西数 WD1200JB 120GB 7200转 8MB缓存
 显卡:Matrox G400 32MB显存
 操作系统:Windows 2003 Server SP1
 虚拟内存:2GB
B机:
 CPU:AMD Athlon64 X2 3800+
 主板:华擎 AM2FN6G-VSTA GeForce6100芯片组
 内存:KingMax 512MB DDR2 800MHz ×2条
 硬盘:希捷 7200.9 300GB 7200转 8MB缓存
 显卡:集成
 操作系统:Windows XP Professional SP2
 虚拟内存:2GB

  参考机的Super Prime测试成绩:
  运行SuperPrime.exe,依次点击“典型测试一”、“典型测试二”、“典型测试三”、“综合测试”,生成的prime64.txt文件内容如下,其中“//”后面是加上去的注释。

A机:
prime64h_f.exe (group=20, threads=2) >>> Sun Sep 30 12:27:57 2007
 //这是典型测试一的成绩,group=20表示一组质数(最多20个)同时计算,threads=2表示2个线程并行运算
18446744073709551427 , 139547 ms  ( thread 1 , +139547 ms )
 //第1个质数由线程1求出,耗时139.547秒
18446744073709551437 , 217766 ms  ( thread 2 , +78219 ms )
 //另外4个质数由线程2同时求出,时间增长78.219秒,累积耗时217.766秒
18446744073709551557 , 217766 ms  ( thread 2 , +78219 ms )
18446744073709551533 , 217766 ms  ( thread 2 , +78219 ms )
18446744073709551521 , 217766 ms  ( thread 2 , +78219 ms )
 //5个质数总耗时217.766秒,平均每个质数耗时43.55秒
B机:
prime64h_f.exe (group=20, threads=2) >>> Sun Sep 30 12:40:10 2007
 //这是典型测试一的成绩,group=20表示一组质数(最多20个)同时计算,threads=2表示2个线程并行运算
18446744073709551427 , 63562 ms  ( thread 1 , +63562 ms )
 //第1个质数由线程1求出,耗时63.562秒
18446744073709551437 , 92203 ms  ( thread 2 , +28641 ms )
 //另外4个质数由线程2同时求出,时间增长28.641秒,累积耗时92.203秒
18446744073709551557 , 92203 ms  ( thread 2 , +28641 ms )
18446744073709551533 , 92203 ms  ( thread 2 , +28641 ms )
18446744073709551521 , 92203 ms  ( thread 2 , +28641 ms )
 //5个质数总耗时92.203秒,平均每个质数耗时18.44秒

A机:
prime64l.exe (group=1, threads=2) >>> Tue Feb 13 23:31:12 2007
 //这是典型测试二的成绩,group=1表示一个一个质数计算,threads=2表示2个线程并行运算
 //由于Athlon XP是单核CPU,实际上是2个线程轮流交替计算
18446744073709551557 , 266110 ms  ( thread 2 , +266110 ms )
 //第1个质数由线程2求出,耗时266.110秒
18446744073709551427 , 475297 ms  ( thread 1 , +209187 ms )
 //第2个质数由线程1求出,时间增长209.187秒,累积耗时475.297秒
18446744073709551533 , 499563 ms  ( thread 2 , +24266 ms )
 //第3个质数由线程2求出,时间增长24.266秒,累积耗时499.563秒,依此类推
18446744073709551521 , 628563 ms  ( thread 2 , +129000 ms )
18446744073709551437 , 757547 ms  ( thread 2 , +128984 ms )
 //5个质数总耗时757.547秒,平均每个质数耗时151.51秒
B机:
prime64l.exe (group=1, threads=2) >>> Wed Feb 14 10:54:57 2007
 //这是典型测试二的成绩,group=1表示一个一个质数计算,threads=2表示2个线程并行运算
18446744073709551557 , 103906 ms  ( thread 2 , +103906 ms )
 //第1个质数由线程2求出,耗时103.906秒
18446744073709551427 , 188391 ms  ( thread 1 , +84485 ms )
 //第2个质数由线程1求出,时间增长84.485秒,累积耗时188.391秒
18446744073709551533 , 204453 ms  ( thread 2 , +16062 ms )
 //第3个质数由线程2求出,时间增长16.062秒,累积耗时204.453秒,依此类推
18446744073709551521 , 305016 ms  ( thread 2 , +100563 ms )
18446744073709551437 , 406000 ms  ( thread 2 , +100984 ms )
 //5个质数总耗时406.000秒,平均每个质数耗时81.20秒

A机:
prime64.exe (group=1, threads=2) >>> Tue Feb 13 23:45:04 2007
 //这是典型测试三的成绩,group=1表示一个一个质数计算,threads=2表示2个线程并行运算
18446744073709551557 , 25985 ms  ( thread 2 , +25985 ms )
 //第1个质数由线程2求出,耗时25.985秒
18446744073709551427 , 46782 ms  ( thread 1 , +20797 ms )
 //第2个质数由线程1求出,时间增长20.797秒,累积耗时46.782秒
18446744073709551533 , 48985 ms  ( thread 2 , +2203 ms )
 //第3个质数由线程2求出,时间增长2.203秒,累积耗时48.985秒,依此类推
18446744073709551521 , 61532 ms  ( thread 2 , +12547 ms )
18446744073709551437 , 74063 ms  ( thread 2 , +12531 ms )
 //5个质数总耗时74.063秒,平均每个质数耗时14.81秒
B机:
prime64.exe (group=1, threads=2) >>> Wed Feb 14 11:03:35 2007
 //这是典型测试三的成绩,group=1表示一个一个质数计算,threads=2表示2个线程并行运算
18446744073709551557 , 10000 ms  ( thread 2 , +10000 ms )
 //第1个质数由线程2求出,耗时10.000秒
18446744073709551427 , 18016 ms  ( thread 1 , +8016 ms )
 //第2个质数由线程1求出,时间增长8.016秒,累积耗时18.016秒
18446744073709551533 , 19641 ms  ( thread 2 , +1625 ms )
 //第3个质数由线程2求出,时间增长1.625秒,累积耗时19.641秒,依此类推
18446744073709551521 , 29313 ms  ( thread 2 , +9672 ms )
18446744073709551437 , 38984 ms  ( thread 2 , +9671 ms )
 //5个质数总耗时38.984秒,平均每个质数耗时7.80秒

 //以下都是综合测试的成绩,共分5段,每段时间单独计算
A机:
prime64h_f.exe (group=10, threads=2) >>> Sun Sep 30 12:35:22 2007
18446744073709551521 , 139968 ms  ( thread 2 , +139968 ms )
18446744073709551557 , 139968 ms  ( thread 2 , +139968 ms )
18446744073709551533 , 139968 ms  ( thread 2 , +139968 ms )
 //综合测试第1段,总耗时139.968秒,平均每个质数耗时46.66秒
prime64_f.exe (group=10, threads=2) >>> Sun Sep 30 12:41:14 2007
18446744073709551521 , 64719 ms  ( thread 2 , +64719 ms )
18446744073709551557 , 64719 ms  ( thread 2 , +64719 ms )
18446744073709551533 , 64719 ms  ( thread 2 , +64719 ms )
 //综合测试第2段,总耗时64.719秒,平均每个质数耗时21.57秒
prime64l.exe (group=1, threads=2) >>> Tue Feb 13 23:51:06 2007
18446744073709551557 , 133234 ms  ( thread 2 , +133234 ms )
 //综合测试第3段,总耗时133.234秒
prime64.exe (group=20, threads=2) >>> Tue Feb 13 23:53:55 2007
18446744073709551437 , 63204 ms  ( thread 2 , +63204 ms )
18446744073709551557 , 63204 ms  ( thread 2 , +63204 ms )
18446744073709551533 , 63204 ms  ( thread 2 , +63204 ms )
18446744073709551521 , 63204 ms  ( thread 2 , +63204 ms )
 //综合测试第4段,总耗时63.204秒,平均每个质数耗时15.80秒
prime64h.exe (group=20, threads=2) >>> Tue Feb 13 23:56:50 2007
18446744073709551533 , 257704 ms  ( thread 2 , +257704 ms )
18446744073709551557 , 257704 ms  ( thread 2 , +257704 ms )
 //综合测试第5段,总耗时257.704秒,平均每个质数耗时128.85秒
 //5段测试总耗时139.968+64.719+133.234+63.204+257.704=658.829秒
 //这个总耗时就是综合测试的总成绩(此处不计算平均耗时,因为无意义)
B机:
prime64h_f.exe (group=10, threads=2) >>> Sun Sep 30 12:18:26 2007
18446744073709551521 , 155187 ms  ( thread 2 , +155187 ms )
18446744073709551557 , 155187 ms  ( thread 2 , +155187 ms )
18446744073709551533 , 155187 ms  ( thread 2 , +155187 ms )
 //综合测试第1段,总耗时155.187秒,平均每个质数耗时51.73秒
prime64_f.exe (group=10, threads=2) >>> Sun Sep 30 12:50:46 2007
18446744073709551521 , 68625 ms  ( thread 2 , +68625 ms )
18446744073709551557 , 68625 ms  ( thread 2 , +68625 ms )
18446744073709551533 , 68625 ms  ( thread 2 , +68625 ms )
 //综合测试第2段,总耗时68.625秒,平均每个质数耗时22.88秒
prime64l.exe (group=1, threads=2) >>> Wed Feb 14 11:08:16 2007
18446744073709551557 , 103875 ms  ( thread 2 , +103875 ms )
 //综合测试第3段,总耗时103.875秒
prime64.exe (group=20, threads=2) >>> Wed Feb 14 11:10:25 2007
18446744073709551437 , 39469 ms  ( thread 2 , +39469 ms )
18446744073709551557 , 39469 ms  ( thread 2 , +39469 ms )
18446744073709551533 , 39469 ms  ( thread 2 , +39469 ms )
18446744073709551521 , 39469 ms  ( thread 2 , +39469 ms )
 //综合测试第4段,总耗时39.469秒,平均每个质数耗时9.88秒
prime64h.exe (group=20, threads=2) >>> Wed Feb 14 11:13:42 2007
18446744073709551533 , 107453 ms  ( thread 2 , +107453 ms )
18446744073709551557 , 107453 ms  ( thread 2 , +107453 ms )
 //综合测试第5段,总耗时107.453秒,平均每个质数耗时53.73秒
 //5段测试总耗时155.187+68.625+103.875+39.469+107.453=474.609秒
 //这个总耗时就是综合测试的总成绩(此处不计算平均耗时,因为无意义)


 三、优化、优化、优化——程序员的基本功训练

  Super Prime是由龙之梦工作室自主开发的工具软件,其中快速求大质数的核心算法,经过计算机奥林匹克竞赛选手的设计优化。软件程序用传统C语言编写而成,具有竞赛级别的性能。
  求质数的算法,程序实现起来并不复杂,很多学程序设计的人都曾编写过。如果您有兴趣,可以用自己编写的求64位大质数程序,和Super Prime作性能对比,这有助于训练自己的算法优化基本功。
  尽管核心算法是一致的,Super Prime仍然提供了多种不同的求质数途径,以适应不同硬件条件下的快速求解要求。例如,批量求解可以减少硬盘读写次数,提高平均求解速度。
  Super Prime作为性能测试软件,从不同的角度测量电脑硬件是有意义的。而出现多个不同的程序,正是因为算法优化并非唯一。即使同样是快速求64位质数,“快速”的不同定义也会导致不同的优化方向。
  对于求64位质数,什么才叫做“最快”?是找到第一个64位质数的时间最短?还是找出大批量64位质数的总耗时最少?抑或是既要尽快找出第一批(个)64位质数,又要使求每个质数的平均耗时最短?这里的分歧绝对不可忽略。
  优化目标就已经有这么明显的差异,再考虑到内存容量、硬盘大小等电脑硬件的差异对软件算法的影响,综合起来,龙之梦工作室最终提供了5个不同的求质数程序。

  5个测试程序的特点和性能表现如下:
 ◆ prime64.exe:标准模式。在物理内存达到1GB或以上的电脑中速度最快,但内存不足1GB时表现较差。
 ◆ prime64_f.exe:标准节约内存模式。对于内存不足1GB的电脑,此程序速度最快。但对于内存1GB或以上的电脑,它明显比prime64.exe慢。
 ◆ prime64h.exe:大数据量模式。在内存达到2GB或以上的电脑中,此程序比prime64.exe慢,但比prime64l.exe快得多。从快速求大批量64位质数(而不是测试性能)的角度来讲,此程序的意义在于数据准备时间比prime64.exe短,首次运行不需要等待太久。
 ◆ prime64h_f.exe:大数据量节约内存模式。类似于prime64_f.exe,对于内存不足2GB的电脑,此程序的速度介于prime64_f.exe和prime64l.exe之间。它存在的价值在于数据准备时间比prime64_f.exe短,首次运行不需要等待太久。
 ◆ prime64l.exe:小数据量模式。完全不需要数据准备,因此不存在等待时间,直接就开始求64位质数。但是速度远远落后于其它程序,因为运算量大很多。此程序的好处是对硬件要求低,只要能运行Windows 95的电脑,就可以用它来求64位质数。
  对于内存不足的电脑,如果纯粹想测试一下prime64.exe和prime64h.exe的性能,未尝不可。但其速度会比prime64_f.exe和prime64h_f.exe慢,原因是读取文件和虚拟内存页面交换相比,少了一次写硬盘的操作。

 四、多个测试程序、测试方法的不同侧重点

  图形界面下,用户可以根据自己的喜好进行各种不同的测试。我们预设了3个典型测试和1个综合测试,分别是:
 ◆ 典型测试一:用prime64h_f.exe程序进行测试。此程序的测试结果比较有代表性,对CPU、内存、硬盘的性能都所体现,首次运行的数据准备时间也不长。因此,这是我们推荐的测试。
 ◆ 典型测试二:用prime64l.exe程序进行测试。此程序对硬件的要求很低,只要能够支持Windows 95的电脑就可以运行,而且不需要数据准备。这个是测试低端电脑的必然选择。
 ◆ 典型测试三:用prime64.exe程序进行测试。此程序在内存1GB或以上的电脑中速度最快,但是首次运行需要较长的数据准备时间。这个测试能够体现出当前高端电脑的硬件性能。
 ◆ 综合测试:是把5个不同的测试程序都运行一遍,把总耗时加起来,就是测试的最终成绩。由于多个程序从不同角度对硬件作出测试,因此这也是我们推荐的测试。
  除此之外,您还可以自己设置个性化测试,包括独立测试和连续测试。
  独立测试是用单个程序进行测试,您可以编辑配置文件(*.ini),修改参数值来决定测试的属性。
  连续测试则是以批处理文件(*.bat)的方式,运行一系列的测试程序。

  Super Prime超级质数机,无论是作为作为性能测试软件,还是作为快速求64位大质数的工具软件,都有其独特的优势。同时,这也是算法优化,考验程序员基本功的一个典型实例。
  可以肯定,龙之梦工作室的软件,将会不断精益求精,把更快、更高、更强的奥林匹克精神发扬光大。

发表意见   相关搜索   返回主页   关闭窗口
相关文章:
  [原创] 数学世界的进化论与人工智能 [2007-02-15]
  [原创] 关于歧视DIY服务器的问题 [2007-04-25]
  [原创] 中小企业信息化的误区 [2007-04-25]
  [原创] 魔高一尺,道高一丈——“雅典娜”网页密码锁 [2007-05-14]
  [原创] 秘密之神——“雅典娜”网页密码锁 [2008-02-04]
  [原创] 里程碑式的人生规划 [2007-08-10]

最新留言:
  [2014-10-16]
  [2014-10-16]
  [2014-06-04]
  [2014-06-04]
  [2013-12-08]
  [2013-11-29]


从2005年3月18日起
访问本站页面计数器人次
版权所有 © 2005 龙之梦工作室,保留一切权利。
电子邮箱:master@28x28.com , co2288@126.com
相关链接 |