- 注册时间
- 2007-12-28
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 12769
- 在线时间
- 小时
|
发表于 2008-4-16 13:51:35
|
显示全部楼层
关于采用不同基的2进制大数加法 的性能测试已经完成。下面给出在2台电脑上的测试数据。所有函数均计算4096 * 32 bit 的加法。对于基为$2^32$的版本,长度为4096个DWORD, 对于基为$2^30$的版本,长度为4370个DWORD.测试次数为10万次。
函数 | PIV 2.6 | PM 1.7 | binAdd_ALU | 1891.065 ms | 3254.955 ms | binAdd_GMP_ALU_8way_unroll | 1342.035 ms | 1029.400 ms | binAdd_Yaos_MMX_4way_unroll | 770.005 ms | 1091.425 ms | base30_ALU | 1183.230 ms | 1456.105 ms | binAdd_base30_ALU_4way_unroll | 1211.250 ms | 1159.940 ms | binAdd_base30_ALU_8way_unroll | 1200.435 ms | 1052.400 ms | binAdd_Base30_MMX_4way_unroll | 891.210 ms | 1414.805 ms |
函数说明:
binAdd_ALU 为基为$2^32$的最普通的版本,未使用循环展开技术。
binAdd_GMP_ALU_8way_unroll 的代码源于GMP,基为$2^32$的ALU版本,使用8路循环展开技术。
binAdd_Yaos_MMX_4way_unroll 源于yaos的代码, 基为$2^32$的MMX版本,使用64bit MMX 寄存器进行计算。
base30_ALU为基为$2^30$的最普通的版本,未使用循环展开技术。
binAdd_base30_ALU_4way_unroll,为基为$2^30$的ALU版本,使用4路循环展开技术。
binAdd_base30_ALU_8way_unroll,为基为$2^30$的ALU版本,使用4路循环展开技术。
binAdd_Base30_MMX_4way_unroll,为基为$2^30$的MMX版本,使用8路循环展开技术。
性能分析:
1. 在PIV 电脑上,不同版本的速度对比
1)MMX 版本明显优于ALU版本,binAdd_Yaos_MMX_4way_unroll 比 binAdd_GMP_ALU_8way_unroll 快了 74%,binAdd_Base30_MMX_4way_unroll 比 binAdd_base30_ALU_4way_unroll 快了36%。
2)循环展开提速不明显。 8路循环展开的版本比binAdd_GMP_ALU_8way_unroll 比 普通版本提速仅 40%, 而另一个8路循环展开的版本仅比4路循环展开的版本提速 0.9%。
3)基为$2^30$的ALU版本比基为$2^32$的版本快11.7%。但MMX 基为$2^30$的版本则比基为$2^32$的版本更慢,binAdd_Base30_MMX_4way_unroll 比binAdd_Yaos_MMX_4way_unroll 慢 15.7%
2. 在PM电脑上,不同版本的速度对比。
1)MMX 版本要比ALU版本差或者大体持平binAdd_Yaos_MMX_4way_unroll 与add_GMP_ALU_8way_unroll 大体持平,binAdd_Base30_MMX_4way_unroll 比 binAdd_base30_ALU_4way_unroll 慢了21.9%。
2)循环展开提速非常明显。 8路循环展开的版本比binAdd_GMP_ALU_8way_unroll 竟达普通版本的316%, 而另一个8路循环展开的版本仅比4路循环展开的版本提速 10.2%。
3)基为$2^30$的ALU版本和基为$2^32$的版本基本持平。但MMX 基为$2^30$的版本则比基为$2^32$的版本更慢,binAdd_Base30_MMX_4way_unroll 比binAdd_Yaos_MMX_4way_unroll 慢了29.6%。
3) 不论是基为$2^30$的版本还是基为$2^32$的版本,不是用循环展开的版本都是最慢的。
总结,就加法而言,在PIV电脑,基为$2^32$的MMX版本是最好的选择,而对于ALU版本,基为$2^30$的版本则胜过基为$2^32$。而在PM电脑,基为$2^32$的ALU版本,MMX版本和基为$2^30$的ALU版都相差不大。 |
|