小弟在写一个项目的时候遇到了这个问题,代码速度始终慢很多。windows下,QT5.7.1,用的是msvc编译器,这面这个函数执行1000次,耗时大约500ms,
int test(int a)
{
std::vector ll(100);
int b = 5;
for(int i=0;i
{
for(int j=1;j
if( j>65)
{
b++;
std::vector s(1);
}
}
}
return b;
}
,而当把代码改为
int test(int a)
{
std::vector ll(100);
int b = 5;
for(int i=0;i
{
for(int j=1;j
if( j>65)
{
b++;
//std::vector s(1);
}
}
}
return b;
}
耗时变成了0ms。
在mingw编译器下,则无这个问题,全都是0ms。我怀疑msvc下,是分支预测失败了很多次。那位大手子给分析一下,这个时间差距是什么导致的。if语句那里,改为
if(j<65)
{
}
else
{
b++;
std::vector s(1);
}
这样也没有作用,求大佬解答一下在msvc下,如何提升运行速度,非常感谢!(windows,msvc下 ,#define likely(x) __builtin_expect(!!(x),1) 宏用不了)