小编Wil*_*all的帖子

numpy 比 Eigen C++ 更快、更高效?

最近,我和一位同事就 python 和 C++ 的性能比较进行了争论。我们俩主要使用这些语言来进行线性代数。所以我写了两个脚本,一个在 python3 中使用 numpy,另一个在 C++ 中使用 Eigen。

Python3 numpy版本matmul_numpy.py:

import numpy as np
import time
a=np.random.rand(2000,2000)
b=np.random.rand(2000,2000)
start=time.time()
c=a*b
end=time.time()
print(end-start) 
Run Code Online (Sandbox Code Playgroud)

如果我运行这个脚本

python3 matmul_numpy.py
Run Code Online (Sandbox Code Playgroud)

这将返回:

0.07 seconds
Run Code Online (Sandbox Code Playgroud)

C++ 特征版本 matmul_eigen.cpp:


#include <iostream>
#include <Eigen/Dense>
#include "time.h"
int main(){
        clock_t start,end;
        size_t n=2000;
        Eigen::MatrixXd a=Eigen::MatrixXd::Random(n,n);
        Eigen::MatrixXd b=Eigen::MatrixXd::Random(n,n);
        start=clock();
        Eigen::MatrixXd c=a*b;
        end=clock();
        std::cout<<(double)(end-start)/CLOCKS_PER_SEC<<std::endl;
        return 0;}
Run Code Online (Sandbox Code Playgroud)

我编译的方式是

g++ matmul_eigen.cpp -I/usr/include/eigen3 -O3 -march=native -std=c++17 -o matmul_eigen
Run Code Online (Sandbox Code Playgroud)

这将返回(c++11 和 c++17):

0.35 seconds
Run Code Online (Sandbox Code Playgroud)

这对我来说很奇怪,1-为什么 numpy 这里比 C++ 更快?我是否缺少任何其他优化标志?

我想也许是因为 python 解释器在这里执行程序更快。因此,我使用stacks …

c++ numpy compiler-optimization python-3.x eigen3

0
推荐指数
1
解决办法
2618
查看次数

标签 统计

c++ ×1

compiler-optimization ×1

eigen3 ×1

numpy ×1

python-3.x ×1