我想问你Haskell和C++编译器是否可以用同样的方式优化函数调用.请看下面的代码.在以下示例中,Haskell明显快于C++.
我听说Haskell可以编译为LLVM,可以通过LLVM传递进行优化.另外我听说Haskell有一些重要的优化.但是以下示例应该能够以相同的性能工作.我想问一下:
(我使用的是LLVM-3.2和GHC-7.6).
C++代码:
#include <cstdio>
#include <cstdlib>
int b(const int x){
return x+5;
}
int c(const int x){
return b(x)+1;
}
int d(const int x){
return b(x)-1;
}
int a(const int x){
return c(x) + d(x);
}
int main(int argc, char* argv[]){
printf("Starting...\n");
long int iternum = atol(argv[1]);
long long int out = 0;
for(long int i=1; i<=iternum;i++){
out += a(iternum-i);
}
printf("%lld\n",out);
printf("Done.\n");
}
Run Code Online (Sandbox Code Playgroud)
用.编译 clang++ -O3 main.cpp
haskell代码:
module Main where
import qualified Data.Vector as …Run Code Online (Sandbox Code Playgroud)