matlab中同一个程序的cputime运行几次时间怎么会都不一样呢?我该怎么确定程序正真的cputime呢?
我用一个简单的程序,同样的程序同样的数据,运行几次出来好几个结果,并且这几个结果就是0.0313,0.0469,0.0156,0.0625这几个数字,无规律的交替出现,不...
我用一个简单的程序,同样的程序同样的数据,运行几次出来好几个结果,并且这几个结果就是0.0313,0.0469,0.0156,0.0625这几个数字,无规律的交替出现,不知道是怎么回事,也不知道究竟哪个才是正确的。
那个结果是程序前面加过clear的。我的程序具体是这样的:
clear all
close all
t1=cputime;
x=-8:0.5:8;
y=x';
X=ones(size(y))*x;
Y=y*ones(size(x));
R=sqrt(X.^2+Y.^2)+eps;
Z=sin(R)./R;
colormap(cool)
xlabel('x'),ylabel('y'),zlabel('z')
e=cputime-t1
结果运行结果显示为
0.3906,0.0469,0.0469, 0.0625,0.0781,0.0469 ,0.0469,0.0625,0.0781,这几个数字的不规则的循环,有时候是0.0156,0.0313,0.0469,0.0625等的不规则循环,请问这是怎么回事,这个程序的cputime究竟应该是什么呢?:) 展开
那个结果是程序前面加过clear的。我的程序具体是这样的:
clear all
close all
t1=cputime;
x=-8:0.5:8;
y=x';
X=ones(size(y))*x;
Y=y*ones(size(x));
R=sqrt(X.^2+Y.^2)+eps;
Z=sin(R)./R;
colormap(cool)
xlabel('x'),ylabel('y'),zlabel('z')
e=cputime-t1
结果运行结果显示为
0.3906,0.0469,0.0469, 0.0625,0.0781,0.0469 ,0.0469,0.0625,0.0781,这几个数字的不规则的循环,有时候是0.0156,0.0313,0.0469,0.0625等的不规则循环,请问这是怎么回事,这个程序的cputime究竟应该是什么呢?:) 展开
2个回答
展开全部
那个程序你应该贴出来才知道为何无规律。
正常来说,每次结果应该都一样,除非你的数据源有rand或类似的存在。
还有,是clear all.不是clear.
=========================================
原来是这样的问题啊!
你真行,不过探求问题的真正原因也是研究精神。
这个cputime当然不可能是一样的啦!因为,你运行一个程序,如果这个程序在cache中,那么运行速度就会很快,如果你的程序是在内存中,那么这个速度就会相对比较慢。
你的上面程序相对较短,所以有变化,有时可能是几百倍,这也正常。但对于运算量比较大的程序(例如:30s的程序),相对来说变化不会很大。即可能是30.2s也可能是29.7s,但不会几百倍的差距。因此,短的运算程序一般计算时间没有意义,因为受OS调度策略影响,只有计算时间长的程序,获取运算时间才有意义。
正常来说,每次结果应该都一样,除非你的数据源有rand或类似的存在。
还有,是clear all.不是clear.
=========================================
原来是这样的问题啊!
你真行,不过探求问题的真正原因也是研究精神。
这个cputime当然不可能是一样的啦!因为,你运行一个程序,如果这个程序在cache中,那么运行速度就会很快,如果你的程序是在内存中,那么这个速度就会相对比较慢。
你的上面程序相对较短,所以有变化,有时可能是几百倍,这也正常。但对于运算量比较大的程序(例如:30s的程序),相对来说变化不会很大。即可能是30.2s也可能是29.7s,但不会几百倍的差距。因此,短的运算程序一般计算时间没有意义,因为受OS调度策略影响,只有计算时间长的程序,获取运算时间才有意义。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询