我有以下代码优化C代码
void Fun2()
{
if(X<=A)
X=ceil(M*1.0/A*X);
else
X=M*1.0/(M-A)*(M-X);
}
我想用C99以快速的方式将其编程,考虑到以下意见。
X
和A
,是32个的变量和I声明为uint64_t
,虽然作为M
static const uint64_t
。该函数被另一个函数调用,并且
A
的值每调用一次n
次就更改为一个新值。需要在执行时间的优化,CPU是酷睿i3,操作系统是Windows 7
数学模型,我要实现它是
F=ceil(Max/A*X) if x<=A
F=floor(M/(M-A)*(M-X)) if x>A
为了清晰和无混乱我以前的帖子是 我有以下代码
void Fun2()
{
if(X0<=A)
X0=ceil(Max1*X0);
else
X0=Max2*(Max-X0);
}
我想使用C99以快速方式对其进行编程,请考虑以下注释。
X0,A,最大值1,并且最大值2是32位的可变和我声明为uint64_t中,虽然最大为静态常量uint64_t中。
该函数被其他函数调用,并且每n次调用Max1,A,Max2的值被更改为随机值。
我在Windows 7,并在代码块的软件
由于工作
如果您声明'X0'&co。作为'uint64_t',但他们是32位变量,你的编译器有严重的问题... –
如果您使用C99,请不要标记C++ – crashmstr
那么问题是什么?如何优化代码?我建议你通过为编译器指定-O3来优化它......另外,如果它是一个库函数,则在'.h'文件中添加一个内联版本,因此编译器可以选择内联它。 – hyde