由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Computation版 - Matlab C++ math lib的速度问题
相关主题
请教一个计算速度的问题lapack++ and blitz++
numerical recipe c++问个数值积分的问题
请问完全没有计算机背景,学会C++需要多久啊?请教如何安装GNU Scientific library for C?
C++里用Blas/Lapack的问题C++ experts please help: GnuWin 32 GSL runtime
[转载] Matlab 移位操作请教下关于C和Fortran混编的MPI并行问题!
请问C里面有没有现成的matrix computation as matlab有人在 Windows 2K + cygwin 下配置 GSL 成功吗?
Matlab和VC混编时能不能查看mxArray的具体内容?老是看到GSL,不知道是什么?干什么用的?
VC2005 调用 matlab engine 运行不了是怎么回事?c++ random number generator
相关话题的讨论汇总
话题: c++话题: matlab话题: lib话题: gsl话题: 速度
进入Computation版参与讨论
1 (共1页)
s*******n
发帖数: 101
1
我的一个M文件,有多层的for循环,所以用Matlab 6.0的C++ math lib重写了一遍,编
译通过,结果也正确,但是速度比在Matlab里直接执行M文件还慢。这正常吗?编译的
时候需要加什么特别选项吗?我用的所有数据类型都是mwArray,这样会不会导致速度
很慢?谢谢。
T*********e
发帖数: 39815
2
这个正常, 尽管你是这么编译的,但生成的代码并不象你用纯粹的C写出来并用C编译器
编译出来的那么有效
里面的瓤还是matlab的,matlab本身处理循环就是很慢

【在 s*******n 的大作中提到】
: 我的一个M文件,有多层的for循环,所以用Matlab 6.0的C++ math lib重写了一遍,编
: 译通过,结果也正确,但是速度比在Matlab里直接执行M文件还慢。这正常吗?编译的
: 时候需要加什么特别选项吗?我用的所有数据类型都是mwArray,这样会不会导致速度
: 很慢?谢谢。

j**u
发帖数: 6059
3

译器
我从来不觉得混编是个好办法,小问题matlab简单方便,大问题还是直接上C比较好。
如果一定要混编,原来看到一本书上说可以先把matlab的一些函数搞成dll,然后在C
里面调用,这样循环也快具体的矩阵处理也快了。但是具体怎么搞,我也不知道也不
关心。现在的C有很多程序库对矩阵的处理非常方便高效,如果C比较熟悉,根本不用
混编也可以做到编程效率很高。

【在 T*********e 的大作中提到】
: 这个正常, 尽管你是这么编译的,但生成的代码并不象你用纯粹的C写出来并用C编译器
: 编译出来的那么有效
: 里面的瓤还是matlab的,matlab本身处理循环就是很慢

T*********e
发帖数: 39815
4
用C写核心代码,然后用matlab的mex编写接口程序, 生成dll, 然后从matlab里面调用
我个人觉得, 这种方法只适合于那种比较大的程序, 各个功能模块是用不同代码编写
的,需要快速整合在一起, 这样比较省事
如果追求代码运行速度,还是直接用C写比较好

【在 j**u 的大作中提到】
:
: 译器
: 我从来不觉得混编是个好办法,小问题matlab简单方便,大问题还是直接上C比较好。
: 如果一定要混编,原来看到一本书上说可以先把matlab的一些函数搞成dll,然后在C
: 里面调用,这样循环也快具体的矩阵处理也快了。但是具体怎么搞,我也不知道也不
: 关心。现在的C有很多程序库对矩阵的处理非常方便高效,如果C比较熟悉,根本不用
: 混编也可以做到编程效率很高。

s*******n
发帖数: 101
5
多谢斑竹奖励.
用纯C写实在比较麻烦,很多函数都要自己编。斑竹能推荐一个比较全而且free的C函数
库吗?我看到网上说Matlab6.5之后M文件的运行速度快了很多,for循环几乎没什么影
响。只要向量化做得好,几乎可以达到和C差不多的速度,不知是不是这样(因为我还没
用过纯C的程序作过比较)。

【在 j**u 的大作中提到】
:
: 译器
: 我从来不觉得混编是个好办法,小问题matlab简单方便,大问题还是直接上C比较好。
: 如果一定要混编,原来看到一本书上说可以先把matlab的一些函数搞成dll,然后在C
: 里面调用,这样循环也快具体的矩阵处理也快了。但是具体怎么搞,我也不知道也不
: 关心。现在的C有很多程序库对矩阵的处理非常方便高效,如果C比较熟悉,根本不用
: 混编也可以做到编程效率很高。

T*********e
发帖数: 39815
6
matlab 6.5之后做了很多优化, 循环速度的确比以前快了,但是还是比C慢的多
我的建议是能把循环变成矩阵向量处理的,尽量用矩阵向量操作, 大部分情况都可以这
么做

好。
在C

【在 s*******n 的大作中提到】
: 多谢斑竹奖励.
: 用纯C写实在比较麻烦,很多函数都要自己编。斑竹能推荐一个比较全而且free的C函数
: 库吗?我看到网上说Matlab6.5之后M文件的运行速度快了很多,for循环几乎没什么影
: 响。只要向量化做得好,几乎可以达到和C差不多的速度,不知是不是这样(因为我还没
: 用过纯C的程序作过比较)。

j**u
发帖数: 6059
7
GSL
日常用到的都包括了,非常好用。

【在 s*******n 的大作中提到】
: 多谢斑竹奖励.
: 用纯C写实在比较麻烦,很多函数都要自己编。斑竹能推荐一个比较全而且free的C函数
: 库吗?我看到网上说Matlab6.5之后M文件的运行速度快了很多,for循环几乎没什么影
: 响。只要向量化做得好,几乎可以达到和C差不多的速度,不知是不是这样(因为我还没
: 用过纯C的程序作过比较)。

p*****e
发帖数: 310
8
re!
open source的c lib: GSL
free的c++ lib: boost/ublas
这是我n长时间来选定的,呵呵

函数
么影
还没

【在 j**u 的大作中提到】
: GSL
: 日常用到的都包括了,非常好用。

j**u
发帖数: 6059
9
我对C++不太熟练,一直有个疑问,为什么不在C++里面用gsl?难倒C++调用C函数库
有困难吗?

【在 p*****e 的大作中提到】
: re!
: open source的c lib: GSL
: free的c++ lib: boost/ublas
: 这是我n长时间来选定的,呵呵
:
: 函数
: 么影
: 还没

s*****l
发帖数: 2041
10
just found this link:
http://www.gnu.org/software/gsl/

【在 p*****e 的大作中提到】
: re!
: open source的c lib: GSL
: free的c++ lib: boost/ublas
: 这是我n长时间来选定的,呵呵
:
: 函数
: 么影
: 还没

相关主题
请问C里面有没有现成的matrix computation as matlablapack++ and blitz++
Matlab和VC混编时能不能查看mxArray的具体内容?问个数值积分的问题
VC2005 调用 matlab engine 运行不了是怎么回事?请教如何安装GNU Scientific library for C?
进入Computation版参与讨论
p*****e
发帖数: 310
11
主要是我做的东西不能open source,没法用gsl。其实我一开始用的就是gsl,它功能
很全,挺不错。
后来我找到了boost/ublas,boost库是c++标准委员会的一些成员和其他志愿者做的,
可以算是准c++标准库,说不定以后c++自带的矩阵库就用ublas了。
用c++(ublas)的最大好处是:
1. 不用担心内存管理,动态数组用vector就可以搞定。
2. 操作符重载等等,A = B + C + D 这样写起来很直观,用gsl的话就要写好几个函数。
3. 流输出方便(输入没试过)
目前ublas还是个基本的blas,gsl中的很多功能还没实现,不过对于我的应用已经足够
了。目前我只编了自己的两个函数:FFT(封装了前面朋友提到的kiss FFT)和
correlation。

【在 j**u 的大作中提到】
: 我对C++不太熟练,一直有个疑问,为什么不在C++里面用gsl?难倒C++调用C函数库
: 有困难吗?

j**u
发帖数: 6059
12
不错。其实我前段时间还想好好用用C++,以后好找工作。结果人懒,就耽搁下来了。
有空就试试你说得这个库。

数。

【在 p*****e 的大作中提到】
: 主要是我做的东西不能open source,没法用gsl。其实我一开始用的就是gsl,它功能
: 很全,挺不错。
: 后来我找到了boost/ublas,boost库是c++标准委员会的一些成员和其他志愿者做的,
: 可以算是准c++标准库,说不定以后c++自带的矩阵库就用ublas了。
: 用c++(ublas)的最大好处是:
: 1. 不用担心内存管理,动态数组用vector就可以搞定。
: 2. 操作符重载等等,A = B + C + D 这样写起来很直观,用gsl的话就要写好几个函数。
: 3. 流输出方便(输入没试过)
: 目前ublas还是个基本的blas,gsl中的很多功能还没实现,不过对于我的应用已经足够
: 了。目前我只编了自己的两个函数:FFT(封装了前面朋友提到的kiss FFT)和

T*********e
发帖数: 39815
13
C++如果你不用,学了也忘,呵呵

功能
的,
足够

【在 j**u 的大作中提到】
: 不错。其实我前段时间还想好好用用C++,以后好找工作。结果人懒,就耽搁下来了。
: 有空就试试你说得这个库。
:
: 数。

j**u
发帖数: 6059
14
其实我已经忘过一次了,呵呵。

【在 T*********e 的大作中提到】
: C++如果你不用,学了也忘,呵呵
:
: 功能
: 的,
: 足够

T*********e
发帖数: 39815
15
me too

【在 j**u 的大作中提到】
: 其实我已经忘过一次了,呵呵。
s*******n
发帖数: 101
16
C++和C相比,效率差得多吗?操作符重载和函数模板之类的肯定会影响一些效率吧

数。

【在 p*****e 的大作中提到】
: 主要是我做的东西不能open source,没法用gsl。其实我一开始用的就是gsl,它功能
: 很全,挺不错。
: 后来我找到了boost/ublas,boost库是c++标准委员会的一些成员和其他志愿者做的,
: 可以算是准c++标准库,说不定以后c++自带的矩阵库就用ublas了。
: 用c++(ublas)的最大好处是:
: 1. 不用担心内存管理,动态数组用vector就可以搞定。
: 2. 操作符重载等等,A = B + C + D 这样写起来很直观,用gsl的话就要写好几个函数。
: 3. 流输出方便(输入没试过)
: 目前ublas还是个基本的blas,gsl中的很多功能还没实现,不过对于我的应用已经足够
: 了。目前我只编了自己的两个函数:FFT(封装了前面朋友提到的kiss FFT)和

p*****e
发帖数: 310
17
感觉上应该可能差一些,不过如果不是做纯数值计算程序的话应该可以接受。用c++的
话可以节省开发时间和维护成本,总体上对一般工程计算我认为还是不错的

功能
的,
足够

【在 s*******n 的大作中提到】
: C++和C相比,效率差得多吗?操作符重载和函数模板之类的肯定会影响一些效率吧
:
: 数。

j**u
发帖数: 6059
18

是要差一点。原来看过一个paper,说现在C++的并行计算效率提高很快,已经和
C差不多了。

【在 s*******n 的大作中提到】
: C++和C相比,效率差得多吗?操作符重载和函数模板之类的肯定会影响一些效率吧
:
: 数。

1 (共1页)
进入Computation版参与讨论
相关主题
c++ random number generator[转载] Matlab 移位操作
GSL里面的例子是不是有的不对阿?请问C里面有没有现成的matrix computation as matlab
extended precision question - GSLMatlab和VC混编时能不能查看mxArray的具体内容?
请推荐一款eigenpackage.VC2005 调用 matlab engine 运行不了是怎么回事?
请教一个计算速度的问题lapack++ and blitz++
numerical recipe c++问个数值积分的问题
请问完全没有计算机背景,学会C++需要多久啊?请教如何安装GNU Scientific library for C?
C++里用Blas/Lapack的问题C++ experts please help: GnuWin 32 GSL runtime
相关话题的讨论汇总
话题: c++话题: matlab话题: lib话题: gsl话题: 速度