POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 9878|回复: 104
打印 上一主题 下一主题

现在cpu的速度真恐怖

[复制链接]
跳转到指定楼层
#
发表于 2007-7-1 23:28 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
新装机E2140 oc 3G,暂时不能上网下测试软件烤机不知道可稳定,又看手头上有VS2005的光盘。就想写个能让cpu长时间跑到100%的东西。用C#这种不算高效的语言,开两个线程分别生成300,000个随机数各自冒泡排序。重复以上过程100,000遍。居然冲个凉出来就已经完成了。虽然计算操作不多,光循环就跑了300000*100000*150000*2(9千万亿?)下啊.

[ 本帖最后由 xing83 于 2007-7-1 23:54 编辑 ]
104#
发表于 2007-7-4 20:05 | 只看该作者
近来晕一下Ej0_        w`N
闪人~~
回复 支持 反对

使用道具 举报

103#
发表于 2007-7-4 16:39 | 只看该作者
楼主,这样的循环在编译後会被优化掉的,没意思
回复 支持 反对

使用道具 举报

102#
发表于 2007-7-3 14:34 | 只看该作者
写这种 micro benchmark 的时候一定要小心设计,不然你的代码很可能就被 compiler 给 “优化” 没了

运算好的结果至少要读入参与另一个运算,才能不被 compiler 认为是无用运算

至于如何写好 micro-benchmark,也是单独的一门学问了,这种 benchmark 很有针对性地,只能测出某一点的性能,比如专门测试 cache,或者这种预测命中机制的命中率

巨大的循环本身测不出 ALU 能力,又没有访存所以测不出内存带宽,所有变量都在 register 中完成所以测不出 cache,连 instruction 都几乎完全命中,如果中间的函数不复杂的话,最后测出的东西也不能说明任何方面的性能了 :huh:
回复 支持 反对

使用道具 举报

101#
 楼主| 发表于 2007-7-3 07:51 | 只看该作者

回复 #105 bessel 的帖子

xp
c#2005
pe2140 oc 3g
要5.71秒
回复 支持 反对

使用道具 举报

strike1up 该用户已被删除
100#
发表于 2007-7-3 07:47 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

99#
发表于 2007-7-3 03:47 | 只看该作者
原帖由 sd-iori 于 2007-7-1 23:57 发表

:shifty: MMX最低主频是166吧,,,,

P133是奔腾时代最高主频吧
66X2


零售版有166的奔腾..记得最后还有200的奔腾(很多人可以将166的超到200)不过那时候已经是MMX166/200/233都出了..我最早用过的是APPLEII和8086
回复 支持 反对

使用道具 举报

98#
发表于 2007-7-3 02:09 | 只看该作者
suse liux, ifort 9.1 20060519
ifort -O3 -tpp7 -xW
AMD Opteron(tm) Processor 285 2.6G
3.5秒以下。
x=4.500000030000000E+016

原帖由 FENG950 于 2007-7-3 00:19 发表

输不输出都是15秒不到,最后结果是4.50000003E+16吗?你的什么环境呢?IDE?编译器版本?
回复 支持 反对

使用道具 举报

97#
发表于 2007-7-3 00:56 | 只看该作者
开6个prime。。。。看你S不S。。
回复 支持 反对

使用道具 举报

96#
发表于 2007-7-3 00:19 | 只看该作者
原帖由 bessel 于 2007-7-3 00:03 发表
算这个吧,
然后输出一下最后的x.
俺在linux下,如果不输出x编辑器就直接跳过了。

x=0.0_8
do while(i

输不输出都是15秒不到,最后结果是4.50000003E+16吗?你的什么环境呢?IDE?编译器版本?

[ 本帖最后由 FENG950 于 2007-7-3 00:33 编辑 ]
回复 支持 反对

使用道具 举报

95#
发表于 2007-7-3 00:03 | 只看该作者
算这个吧,
然后输出一下最后的x.
俺在linux下,如果不输出x编辑器就直接跳过了。

x=0.0_8
do while(i<=300000*1000)
    x=dsqrt(dfloat(i)*dfloat(i+1))+x
    i=i+1
end do


原帖由 FENG950 于 2007-7-2 23:46 发表
浮动挺大的,不展开15到11秒都有,展开试了是三秒左右。
刚刚又跑了有五秒多的。
AM2 3000+ 1G DDR2 667。
回复 支持 反对

使用道具 举报

94#
发表于 2007-7-2 23:46 | 只看该作者
浮动挺大的,不展开15到11秒都有,展开试了是三秒左右。
刚刚又跑了有五秒多的。
AM2 3000+ 1G DDR2 667。

[ 本帖最后由 FENG950 于 2007-7-2 23:55 编辑 ]
回复 支持 反对

使用道具 举报

93#
发表于 2007-7-2 23:43 | 只看该作者
你的要多久?
30,000*1000试试看.
原帖由 FENG950 于 2007-7-2 23:41 发表

就是LZ最后贴出那个,我那个你不要开玩笑了,16ms我就爽死了。
回复 支持 反对

使用道具 举报

92#
发表于 2007-7-2 23:41 | 只看该作者
原帖由 bessel 于 2007-7-2 23:39 发表
你算的是不是300000*1000个浮点,16ms那个?

就是LZ最后贴出那个,我那个你不要开玩笑了,16ms我就爽死了。
回复 支持 反对

使用道具 举报

91#
发表于 2007-7-2 23:39 | 只看该作者
看到你的图了,只算了300000个用了16ms。


原帖由 FENG950 于 2007-7-2 23:37 发表

其实LZ那个程序有问题,内循环只执行一次(从0到300000),因为K没有复位,因此外循环第一次以后再进入时K都不会小于300000,所以时间其实很短,只有第一次0到300000是真正在做计算。

[ 本帖最后由 bessel 于 2007-7-2 23:42 编辑 ]
回复 支持 反对

使用道具 举报

90#
发表于 2007-7-2 23:37 | 只看该作者
原帖由 zxjike 于 2007-7-2 23:34 发表

这样的
if Test()=False Then
中间原来有Exit sub,注释掉了就什么都没有了。
EndIF

Private function Test() as boolean
...
...
End Function

然后Debug下Test能执行,Release下就不执行。

是VB吗?哈哈,VB完全不懂啊。
回复 支持 反对

使用道具 举报

89#
发表于 2007-7-2 23:37 | 只看该作者
原帖由 bessel 于 2007-7-2 23:18 发表
16ms是哪部分的时间?

其实LZ那个程序有问题,内循环只执行一次(从0到300000),因为K没有复位,因此外循环第一次以后再进入时K都不会小于300000,所以时间其实很短,只有第一次0到300000是真正在做计算。
回复 支持 反对

使用道具 举报

88#
发表于 2007-7-2 23:35 | 只看该作者
30000*1000个浮点如果是双精度的话,时间是绝对不够的.
time =   3.150000      0.0000000E+00
   3464101623798.05  
俺的机器还不是太挫.
ifort -O3别的暂时没开.

program test
implicit none
real,dimension(2) :: t1,t2
real              :: t0,etime
integer:: i
real*8 :: x
t0=ETIME(t1)
i=1
x=0.0_8
do while(i<=300000*1000)
  x=dsqrt(dfloat(i))+x

  i=i+1
end do
t0=ETIME(t2)
print*,"time =",t2(1)-t1(1),t2(2)-t1(2)
print*,x
end program test
原帖由 zxjike 于 2007-7-2 23:30 发表

我没有跑,但是我觉得应该是全部。
回复 支持 反对

使用道具 举报

zxjike 该用户已被删除
87#
发表于 2007-7-2 23:34 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

zxjike 该用户已被删除
86#
发表于 2007-7-2 23:30 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

85#
发表于 2007-7-2 23:27 | 只看该作者
原帖由 zxjike 于 2007-7-2 23:22 发表
以前我的组有个家伙写程序风格老是这样。
Release模式一跑就乱套,Debug还查不到,几万行原来都是if ... endif中间调用的函数,因为if空的都不执行....

就是说if();这样的?
回复 支持 反对

使用道具 举报

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

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-8-2 23:41

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

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