LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: chgtg

一个简单的测试!请大家过来看看,并帖上测试的结果!谢谢!

[复制链接]
发表于 2005-12-11 16:23:20 | 显示全部楼层

  1. Gentoo Linux 2005.1  ,   2.6.14-gentoo-r4 , i686 Intel(R) Pentium(R) 4 Mobile CPU 1.50GHz GenuineIntel GNU/Linux
复制代码

  1. $cat /proc/cpuinfo
  2. processor       : 0
  3. vendor_id       : GenuineIntel
  4. cpu family      : 15
  5. model           : 2
  6. model name      : Intel(R) Pentium(R) 4 Mobile CPU 1.50GHz
  7. stepping        : 4
  8. cpu MHz         : 1500.001
  9. cache size      : 512 KB
  10. fdiv_bug        : no
  11. hlt_bug         : no
  12. f00f_bug        : no
  13. coma_bug        : no
  14. fpu             : yes
  15. fpu_exception   : yes
  16. cpuid level     : 2
  17. wp              : yes
  18. flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
  19. bogomips        : 3005.15
复制代码

  1. $gcc -v
  2. Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.4/specs
  3. Configured with: /var/tmp/portage/gcc-3.4.4-r1/work/gcc-3.4.4/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/3.4.4 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4.4/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/include/g++-v3 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --disable-multilib --disable-libmudflap --disable-libgcj --enable-languages=c,c++,f77 --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
  4. Thread model: posix
  5. gcc version 3.4.4 (Gentoo 3.4.4-r1, ssp-3.4.4-1.0, pie-8.7.8)
复制代码

  1. $time gcc count.c -o count
  2. real    0m0.138s
  3. user    0m0.080s
  4. sys     0m0.040s

  5. $time ./count
  6. Result is 3200002029.000000

  7. real    1m37.924s
  8. user    1m37.898s
  9. sys     0m0.004s
复制代码

  1. $time gcc -O2 count.c -o count

  2. real    0m0.143s
  3. user    0m0.100s
  4. sys     0m0.028s
  5. $time ./count
  6. Result is 3200002029.000000

  7. real    0m27.298s
  8. user    0m27.262s
  9. sys     0m0.000s
复制代码

我的破电脑优化后有比AMD 3000+还快的速度?迅驰赛扬1300MHz比P4 M1500MHz的快那么多啊。
楼上的G5看上去速度不怎么样嘛,使用优化参数编译后的结果还不如我这台32位处理器的破电脑,怎么回事?配不上传说中最快的桌面电脑之称。
回复 支持 反对

使用道具 举报

发表于 2005-12-11 17:37:39 | 显示全部楼层
是哦,看上面G5的结果好像64位还没在32位下跑得快
回复 支持 反对

使用道具 举报

发表于 2005-12-11 19:43:52 | 显示全部楼层
所以我想知道这个代码到底是测试什么的?为什么结果是这样?我的赛扬m竟然那么快。。。。
回复 支持 反对

使用道具 举报

发表于 2005-12-11 21:23:52 | 显示全部楼层
当然是测浮点运算的,不涉及SIMD指令,不知道跑X86和PPC的SIMD指令效率如何,PPC的altivec不是说很强么?
回复 支持 反对

使用道具 举报

发表于 2005-12-11 23:20:02 | 显示全部楼层
ppc的浮点运算不是很强吗?结果竟然是这样,感觉好像上当了
回复 支持 反对

使用道具 举报

发表于 2005-12-12 18:59:45 | 显示全部楼层
freesky64:
你应该未优化的比较未优化的
优化编译的比较优化编译的


AMD64 的用 -O2 后是 10 秒上下


BTW: 一般的二进制软件包的编译参数也用了 -O2  , 所以不要多想
回复 支持 反对

使用道具 举报

发表于 2005-12-12 20:21:05 | 显示全部楼层
谢谢jhuangjiahua的解答。

这个测试让人很费解。
AMD64 3000+未使用优化时30s左右,G5 2G工作于32位模式时为优化用了1分多一点,慢了1倍多,大概就相当于一个赛扬迅驰;可是一优化了就只有9s左右了,和3000+是差不多水平了。
然后G5 工作于64位模式下同样是O2的优化,需要40来秒,怎么反而比32位时使用O2优化又慢了那么多,甚至比我的电脑使用优化参数编译的速度还慢。64位运算反而不如32位运算。

本来很喜欢G5,想用用G5的机器的,不过如果是这样的状况的话,整一个又不中看也不中用了。
回复 支持 反对

使用道具 举报

发表于 2005-12-13 00:33:33 | 显示全部楼层
...如果这样一个测试就可以说明一切速度问题
那么还要那么多测试软件做什么?。。。。

time gcc -fast -mcpu=7450 -mtune=7450 -O3 count.c -o count

real    0m0.237s
user    0m0.056s
sys     0m0.055s

time ./count
Result is 3200002029.000000

real    0m24.514s
user    0m23.517s
sys     0m0.131s


G4 1.5G
优化了一下,原来要2min多
回复 支持 反对

使用道具 举报

发表于 2005-12-13 01:35:48 | 显示全部楼层
优化后的确效果好多了
回复 支持 反对

使用道具 举报

发表于 2005-12-13 10:52:50 | 显示全部楼层
谁说64位一定比32位快了。这个例子里面,所有数据都是32位足够表示的,64位的高精度没有任何帮助,用了也是浪费。而且最主要的是64位乘法比32位的慢...
即使都用了simd指令,如果三个平台(amd64,g5,ia32)的simd寄存器都是128位,那其实还是32位平台有优势。
其实如果对高精度运算或者超大规模的内存支持没有特别大需求,32位加上simd优化应该足够了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表