博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Eigen vs Numpy时间对比
阅读量:5055 次
发布时间:2019-06-12

本文共 1666 字,大约阅读时间需要 5 分钟。

Eigen vs Numpy时间对比

有人说Eigen太慢了,用Numpy好一点,我们来看一看是不是这样的

Eigen C++ 程序 t_time.cpp

#include 
#include
using namespace Eigen;void integer_time(){ int n_a_rows = 4000; int n_a_cols = 3000; int n_b_rows = n_a_cols; int n_b_cols = 200; MatrixXi a(n_a_rows, n_a_cols); for(int i =0; i

使用cmake 来编译

cmake_minimum_required(VERSION 2.8)set(CMAKE_CXX_STANDARD 11)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2 -DNDEBUG")find_package(Eigen3 REQUIRED) include_directories(    ${PROJECT_SOURCE_DIR}    ${EIGEN3_INCLUDE_DIRS}    )add_executable(a t_time.cpp)target_link_libraries(a ${Eigen3_LIBS})

或者直接编译:

g++ -std=c++11 -I/usr/include/eigen3 -O2 -DNDEBUG t_time.cpp -o a
输出结果:

1.15959integer time0.60962double time

Numpy 程序 t_time.py

#!/usr/bin/env python# coding=utf-8import numpy as npimport timen_a_rows = 4000n_a_cols = 3000n_b_rows = n_a_colsn_b_cols = 200a = np.arange(n_a_rows * n_a_cols).reshape(n_a_rows, n_a_cols)b = np.arange(n_b_rows * n_b_cols).reshape(n_b_rows, n_b_cols)print(a.dtype)start = time.time()d = np.dot(a, b)end = time.time()print "integer time  : {}".format(end - start)a = np.arange(n_a_rows * n_a_cols).reshape(n_a_rows, n_a_cols)*1.0b = np.arange(n_b_rows * n_b_cols).reshape(n_b_rows, n_b_cols)*1.0print(a.dtype)start = time.time()d = np.dot(a, b)end = time.time()print "double time : {}".format(end - start)

输出结果:

int64integer time  : 2.97904801369float64double time : 0.0668978691101

总结

  • int 型的时候c++比较快, double型的时候numpy比较快
  • 但两者都差不多
  • numpy用起来比较舒服,代码量非常少
  • C++ 使用了 -O2 -DNDEBUG 做编译优化, 不然时间都需要10几秒

C++ 没有使用编译优化时:

16.0714integer time18.6559double time

转载于:https://www.cnblogs.com/wangzheqie1/p/9237058.html

你可能感兴趣的文章
POJ 1364 King(差分约束)
查看>>
20165314 Linux安装及学习
查看>>
Linux - svn 操作
查看>>
Python编写的ssh客户端[类似putty]
查看>>
格式化日期
查看>>
管中窥Vue
查看>>
hdu 1010 Tempter of the Bone 奇偶剪枝
查看>>
WinForm/Silverlight多线程编程中如何更新UI控件的值
查看>>
ListView 加载数据时 触摸报错
查看>>
【Codeforces Round #430 (Div. 2) A C D三个题】
查看>>
LightOJ 1013 - Love Calculator LCS
查看>>
秒杀 ILSpy 等反编译利器 DotNet Resolver
查看>>
Linux常用命令学习随笔
查看>>
VCSA服务重启命令
查看>>
傅里叶变换
查看>>
爬虫-request以及beautisoup模块笔记
查看>>
jQuery遍历
查看>>
SharePoint2010文档归档策略(2)-从放置库转移到自己定义的文档库
查看>>
小白_Unity引擎_添加Tag和比较Tag
查看>>
c语言基本常识1(知识点)
查看>>