有人可以用这个小程序解释这里发生了什么吗?
#include<stdio.h>
int main()
{
float a=0.577;
float b=0.921;
float c;
int i;
for (i=0;i<100000000;i+=1){
c=0.7*a-0.2*b;
//a=0.145*c+2.7*b;
}
printf ("%.3f\n",c);
}
Run Code Online (Sandbox Code Playgroud)
注意,有一行注释掉了.
我首先编译它没有线,然后是线.(使用gcc -O2 ...).并测量了处理时间.我很惊讶地发现执行时间0.001s与之相反2.444s.这没有多大意义.或者更确切地说,这背后必定有一些逻辑.
您能否解释一下发生了什么以及如何缓解这个问题?
我处理一个处理大量数据的程序,在我看来,我遇到了相同的性能问题.
我正在考虑从浮点数转换为整数但似乎整数表示它的行为相同.
编辑:最后解决方案是微不足道和合乎逻辑的.所以我感谢所有答案和解释!
我将通过'from other linux'方法在我的PC上安装debian,并且我遇到了debootsrapt无法通过我们的代理的问题.据我所知,debootstrap没有配置文件既没有在命令行上获取参数(与代理相关),所以我设置了以下两个环境变量:
ftp_proxy=http://myname:mypasswd@proxy.bla.bla.com:4128
http_proxy=http://myname:mypasswd@proxy.bla.bla.com:4128
Run Code Online (Sandbox Code Playgroud)
我仍然得到:
# /usr/sbin/debootstrap --arch i386 wheezy /mnt/debinst http://ftp.cz.debian.org/debian
I: Retrieving Release
E: Failed getting release file http://ftp.cz.debian.org/debian/dists/wheezy/Release
Run Code Online (Sandbox Code Playgroud)
发布文件可以通过浏览器获取,因此它存在等等......
我想知道这是否可以完成
谢谢