更快的代码:
两者唯一的区别在于第二行
两者都是使用clang++ 8.0.0-3编译的,并且使用了-O2标志。
#include <stdio.h>
#include <iostream>
long fib(int num)
{
if (num <= 1)
return 1;
else
return fib(num-1) + fib(num-2);
}
int main()
{
long res = fib(45);
printf("%li\n", res);
return 0;
}
较慢的代码:
#include <stdio.h>
long fib(int num)
{
if (num <= 1)
return 1;
else
return fib(num-1) + fib(num-2);
}
int main()
{
long res = fib(45);
printf("%li\n", res);
return 0;
}
两者唯一的区别在于第二行
#include <iostream>
。两者都是使用clang++ 8.0.0-3编译的,并且使用了-O2标志。
clang++-8 -O2 fib.cpp && time ./a.out # 3.59s
clang++-8 -O2 fib_io.cpp && time ./a.out # 3.15s
编辑:
看起来在重新启动后行为有所改变,iostream版本这次变慢了,这样更有意义。
我倾向于认为这只是个巧合,因为我无法再次重现。
iostream
的代码速度更快。 - Evg