- 注册时间
- 2007-12-28
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 12787
- 在线时间
- 小时
|
发表于 2009-2-14 10:40:03
|
显示全部楼层
贴上一份测试结果:
CPU: AMD Sempron 2500+, 1.75MH, MMX,3DNow,SSE
L1 Data :64K,L1 Code:64K
L2 cache:256K
RAM: 1248MB,
说明:
1. 参考函数为iSqt_ref,代码见下
DWORD __fastcall iSqrt_ref(DWORD n)
{ DWORD r=(DWORD)(sqrt(double(n))); return r; }
2. 测试时:取3次测试的最小值
测试结果 case 1,计算0-65535的平方根
1)iSqt_FPU1_lbc 最快,其次是iSqt_FPU2_lbc,
2)liangbch的两个C版本也排到了第3和第5. 这两个c版本和被开方数的bit数有关,被开方数越小,速度越快。
3)只有 iSqt_GxQ_asm 和 iSqt_16 的速度低于参考函数(iSqrt_ref), ISqrt最慢。
4)各个函数的实际速度为(按速度排序)
iSqt_FPU1_lbc#: 0.00091 s
iSqt_FPU2_lbc#: 0.00126 s
iSqt_c1_lbc#: 0.00141 s
iSqt_FPU_yaos#: 0.00182 s
iSqt_c2_lbc#: 0.00184 s
iSqt_FPU2_yaos#: 0.00185 s
iSqt_FPU3_lbc#: 0.00192 s
iSqt_gxq_c#: 0.00202 s
iSqt_FPU1_yaos#: 0.00219 s
Sqt_ref 0.00295 s (参考函数)
iSqt_GxQ_asm#: 0.00336 s
iSqt_16#: 0.00449 s
测试结果 case 2,计算0-2^28-1的平方根
1)iSqt_FPU1_lbc 最快,其次是iSqt_FPU2_lbc,
2)liangbch的两个C版本也这次排到了第8和第10.
3)iSqt_c1_lbc,iSqt_GxQ_asm 和 iSqt_16 的速度低于参考函数(iSqrt_ref), ISqrt_16依然是最慢的。
4)各个函数的实际速度为(按速度排序)
iSqt_FPU1_lbc#: 3.82618 s
iSqt_FPU2_lbc#: 5.32978 s
iSqt_FPU_yaos#: 7.70527 s
iSqt_FPU2_yaos#: 7.74564 s
iSqt_FPU3_lbc#: 8.12494 s
iSqt_gxq_c#: 8.43633 s
iSqt_FPU1_yaos#: 9.19390 s
iSqt_c2_lbc#: 11.06406 s
iSqt_ref#: 12.36054 s (参考函数)
iSqt_c1_lbc#: 12.53915 s
iSqt_GxQ_asm#: 14.09524 s
iSqt_16#: 19.85911 s |
|