`
lilisalo
  • 浏览: 1108874 次
文章分类
社区版块
存档分类
最新评论

极限测试之Matlab与Forcal有无JIT加速器的比较

 
阅读更多

1、简单循环

Matlab 2009a在运行以下代码时使用了JIT加速器,获得了和C/C++近乎相同的运行速度:


============

Forcal没有JIT加速器,代码:


结果:
10000000.
0.704秒

二者运行效率相差7倍多。

2、循环中稍微加点东西

Matlab代码:


Forcal代码:


结果:
11008953.66602346
1.031

二者效率相差已比较小。

3、再增加一个函数调用

Matlab代码:


Forcal代码:


结果:
512508953.6658993
1.078

可以看出,Matlab效率已不及Forcal。
故JIT加速器虽好,但效果似乎并不明显。

===================

===================

4、在JIT加速器下,Matlab的数组存取效率非常高

Matlab代码:


============

Forcal代码:


结果:
15.484//存数据所用时间,秒
20000000.
5.531 //取数据所用时间,秒

----------

用函数sys::A()存取数组数据效率稍高些:


结果:
10.469
20000000.
3.781

-------

在不使用函数sys::A()时,Forcal存数组数据耗时与matlab之比约110:1,取数组数据耗时与matlab之比约60:1。
在使用函数sys::A()时,Forcal存数组数据耗时与matlab之比约75:1,取数组数据耗时与matlab之比约41:1。

matlab的JIT加速器对数组元素的存取效果是明显的,获得了与C/C++近乎相同的存取效率。

Forcal之所以存取比较慢,原因在于动态数组由扩展库提供,数组元素的存取由函数的层层调用来实现。不过,数组元素的存取效率体现了Forcal对扩展库中任意对象的存取效率。

5、在循环中加点东西

matlab代码:


Forcal代码:


结果:
24002271.69189384
5.172

二者效率现在只有一倍差距。

----------

不过,显然matlab和Forcal的程序应该这样写:

matlab程序:


Forcal程序:


结果:
24002271.69189384
1.625

matlab效率已不及Forcal。

提示:目前Forcal对数组元素存取效率较低,要想提高效率:(1)用临时变量暂存数组元素;(2)用专用函数sys::GA( )和sys::SA( )一次存取大量连续元素;(3)对数组整体操作。

=========

=========

在这里顺便说一下Forcal静态数组,静态数组是用字符串模拟的,但数组元素存取效率非常高,约是C/C++静态数组元素存取效率的1/5左右。

Forcal代码:


结果:
0.5620000000000001//赋值用时间,秒
20000000.
0.579 //取值用时间,秒

分享到:
评论

相关推荐

    Forcal数据库应用

    让Forcal的控制台应用程序能够读取数据库中的表达式字符串并计算,你只要双击\ForcalConsole\Forcal数据库应用\ForcalConsole.exe文件,就可以完成创建数据库,读取数据库中的表达式字符串并运算的功能了。...

    FORCAL数值计算扩展动态库FcIMSL V1.0测试版.pdf

    FORCAL数值计算扩展动态库FcIMSL V1.0测试版.pdf

    forcal编程软件

    这个是forcal进行编程的工具,对于需要此程序的人,希望能提供帮助

    FORCAL V7.0 字符表达式编译运行库

    内容索引:VC/C++源码,控件相关,Forcal,编译 Forcal是一个对字符表达式进行编译计算的动态链接库,具有数值计算、关系运算、逻辑运算、字符处理、流程控制、函数调用等许多的可编程功能。它的部分开发文档是由C++...

    VC Forcal7调用例子.rar

    VC Forcal7调用例子,请在此输入表达式!一次只计算一个表达式!  可在多行中输入表达式。  如果有自变量,只进行编译,但将保留编译结果,自定义的函数随时可以调用。  重新初始化将清除以前的编译结果。  ...

    通用的数学表达式编译计算动态库 V5.1

    令人欣喜的是,现在有了FORCAL.DLL,您可以在软件中自由地添加各种数值计算功能,享受到一劳永逸之乐趣。 该动态库支持实数、复数和整数三种类型的数学表达式,这三种表达式可以单独使用,也可同时使用,在同时使用...

    开放式计算程序OpenFC

     OpenFC是一个开放式的数值计算程序,由Forcal32.dll和MForcal32.dll提供支持。  OpenFC能够编译运行具有固定格式的源程序(字符串表达式),源程序中可以使用C++风格的注释。源程序中可以使用的运算符有+、-、*、...

    数学计算系统.rar

    数学和工程计算平台,采用forcal语言和内核,内置有丰富的范例可供参考,可广泛应用于数学建模,工程设计与计算,作图,程式设计等等,计算速度快而准确,让你解决问题不再感觉困难。

Global site tag (gtag.js) - Google Analytics