相关疑难解决方法(0)

Haskell可以像Clang/GCC一样优化函数调用吗?

我想问你Haskell和C++编译器是否可以用同样的方式优化函数调用.请看下面的代码.在以下示例中,Haskell明显快于C++.

我听说Haskell可以编译为LLVM,可以通过LLVM传递进行优化.另外我听说Haskell有一些重要的优化.但是以下示例应该能够以相同的性能工作.我想问一下:

  1. 为什么我在C++中的示例基准测试比Haskell中的基准测试慢?
  2. 是否有可能进一步优化代码?

(我使用的是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)

c++ optimization performance haskell llvm

14
推荐指数
3
解决办法
1086
查看次数

标签 统计

c++ ×1

haskell ×1

llvm ×1

optimization ×1

performance ×1