c++和matlab的运算速度比较
我最近用c++和matlab做了一些线性代数方面的测试,结果显示c++比matlab慢挺多的,不知道是什么原因。c++编译器用的是VS2010,矩阵什么的用的是armad...
我最近用c++和matlab做了一些线性代数方面的测试,结果显示c++比matlab慢挺多的,不知道是什么原因。c++编译器用的是VS2010,矩阵什么的用的是armadillo库。
我在看armadillo库的帮助文档时,发现他们的测试结果是c++比matlab要快,请问是我的c++编译器出了问题吗?
谢谢! 展开
我在看armadillo库的帮助文档时,发现他们的测试结果是c++比matlab要快,请问是我的c++编译器出了问题吗?
谢谢! 展开
5个回答
展开全部
matlab是解释性语言,看看下面的解释吧:
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。
解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。解释是逐行的翻译。
编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
但随着硬件的升级和设计思想的变革,编译型和解释型语言越来越笼统,主要体现在一些新兴的高级语言上,而解释型语言的自身特点也使得编译器厂商愿意花费更多成本来优化解释器,解释型语言性能超过编译型语言也是必然的。
我个人在做矩阵运算时用的是MTL4,这个库是用C++的template(模板)写的,效率很高,因此就是做矩阵运算也不输matlab,也还易用。当然,想让程序做计算时跑得更快,你应该学学数值计算中的一些经典算法,以期能达到最小的时间复杂度,然后再结合c++编译器,这样你代码才能无敌于其他平台。当然如果你认定matlab在某些领域的算法上有已有更好的易用性和执行速度,那么你也可以利用C++与matlab混合编程的做法,也是不错的选择,毕竟matlab工程计算库经过这么多年的经营,其内容是如此丰富多彩,把它嵌入到自己的工程开发中将省事不少。
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。
解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。解释是逐行的翻译。
编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
但随着硬件的升级和设计思想的变革,编译型和解释型语言越来越笼统,主要体现在一些新兴的高级语言上,而解释型语言的自身特点也使得编译器厂商愿意花费更多成本来优化解释器,解释型语言性能超过编译型语言也是必然的。
我个人在做矩阵运算时用的是MTL4,这个库是用C++的template(模板)写的,效率很高,因此就是做矩阵运算也不输matlab,也还易用。当然,想让程序做计算时跑得更快,你应该学学数值计算中的一些经典算法,以期能达到最小的时间复杂度,然后再结合c++编译器,这样你代码才能无敌于其他平台。当然如果你认定matlab在某些领域的算法上有已有更好的易用性和执行速度,那么你也可以利用C++与matlab混合编程的做法,也是不错的选择,毕竟matlab工程计算库经过这么多年的经营,其内容是如此丰富多彩,把它嵌入到自己的工程开发中将省事不少。
参考资料: 百度百科 解释性语言 http://baike.baidu.com/view/1760224.htm
展开全部
这个得看你编码水平了……你如果已经对C非常熟悉,而且代码编写的没有任何问题的话,应该是C更快的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
matlab又称矩阵实验室,对矩阵运算,还有一些常见的代数运算都做了优化。如果你的程序也做了相应的优化,那至少你的程序不应该比matlab慢。 PS,基本上跟你用的编译器没有关系,个人认为VS2010的编译优化还是不错的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
matlab专门的数学计算软件,对矩阵处理的速度是很快的。c++涉及到程序精简度,看水平了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
涉及到循环的话,还是C++跑得快,矩阵就肯定是matlab了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询