liangbch
发表于 2010-7-7 15:48:05
39# 无心人
还是考虑兼容旧的CPU比较好。
无心人
发表于 2010-7-7 15:51:00
:o
郭老大都进入64位时代了,咱还是跟潮流吧
qianyb
发表于 2010-7-7 15:54:38
要喜新不厌旧,根据不同的CPU采用不同的进制,呵呵
liangbch
发表于 2013-2-25 22:05:11
我的观点如下:
2.大数表示采用和intel相反的顺序,和书写顺序一致。高位在前,低位在后。这 ...
liangbch 发表于 2008-4-10 19:53 http://bbs.emath.ac.cn/images/common/back.gif
这两天在优化大数加法时,发现采用大尾序很不方便,现郑重决定,将我的大数库的存储方式改为小尾序(和Intel格式一致)。
基于以下原因,采用小尾序的方式优于大尾序
1.整数的加,减,乘都是以从低到高的顺序计算,采用小尾序表示大整数,对内存的访问是最自然的。
2.虽然整数的除法和整数的I/O采用从高到低的顺序,但相对不太常用,采用小尾序表示大整数,不影响大数库的最终性能。
3.SSE2指令可一次处理4个DWORD,访问MMX寄存器的低32bit和低64bit可用movd和movq来实现,但访问最高的DWORD就不得不用移位和pshufd指令了,pshufd是较慢的指令。若大数的存储方式使用小尾序,处理进位比较方便,则大数的存储方式使用大尾序,则不得不使用额外的pshufd指令,从而降低性能。
gxqcn
发表于 2013-2-26 08:27:19
apfloat 采用的是大尾序,HugeCalc 采用的是小尾序(即楼上推崇的)。
小尾序在数据动态增长时,比如相加,或乘以一个int型时,即便进位也是在高位,有时甚至无需移动数据。
至于第2点,我感觉访问顺序本身对性能不存在降低的可能。
liangbch
发表于 2013-2-26 10:51:59
赞同你说的。对于顺序访问和逆序访问的性能,我没有实测,不知道逆序访问对L2的命中率有没有影响。
无心人
发表于 2013-3-2 15:24:16
44# liangbch
欢迎回归主流