Matlab 2009a编译了如下简单长函数,多次编译,耗时均大约为3分钟:
f=@(x)x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+...
x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+...
x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+...
... ...(省略)
x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+...
1;
完整的程序见附1。
测试如下代码速度:
======================
Forcal 9(OpenFC演示)编译了如下简单长函数,第一次编译,耗时约0.688秒,以后编译耗时约6.3e-002秒:
f(x)=
x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+
x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+
x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+
... ...(省略)
x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+x+1+
1;
完整的程序见附2。
测试如下代码速度:
结果:
67100033.
0.64秒
==================
可以看出,Matlab运行大的程序,仅编译就会耗费不少时间。
==================
为什么Forcal第一次编译耗时较长(约0.688秒),而以后编译耗时较少(约6.3e-002秒)?
Forcal编译器在初次使用时,给编译模块分配的内存较少,此时若所编译的表达式较短,则编译所用内存足够用,在编译时就不用再分配内存;若遇到一个较长的表达式,编译模块就要重新分配内存,直到能编译该表达式为止,故耗费了一些时间;以后,若遇到的表达式都短于以前曾编译的长表达式,就不再重新分配内存,故不再降低编译速度。
目前,需重新初始化Forcal,才释放给编译模块分配的较大内存,但一般不需要这样做。
对于脚本,编译效率和运行效率同样重要。
==================
附1:多个x加1的Matlab代码
附2:多个x加1的Forcal代码
分享到:
相关推荐
令人欣喜的是,现在有了FORCAL.DLL,您可以在软件中自由地添加各种数值计算功能,享受到一劳永逸之乐趣。 该动态库支持实数、复数和整数三种类型的数学表达式,这三种表达式可以单独使用,也可同时使用,在同时使用...
FORCAL数值计算扩展动态库FcIMSL V1.0测试版.pdf
内容索引:VC/C++源码,控件相关,Forcal,编译 Forcal是一个对字符表达式进行编译计算的动态链接库,具有数值计算、关系运算、逻辑运算、字符处理、流程控制、函数调用等许多的可编程功能。它的部分开发文档是由C++...
让Forcal的控制台应用程序能够读取数据库中的表达式字符串并计算,你只要双击\ForcalConsole\Forcal数据库应用\ForcalConsole.exe文件,就可以完成创建数据库,读取数据库中的表达式字符串并运算的功能了。...
VC Forcal7调用例子,请... 如果有自变量,只进行编译,但将保留编译结果,自定义的函数随时可以调用。 重新初始化将清除以前的编译结果。 注意:在任意可接受输入的窗口,按 Ctrl Alt Q(q) 可以退出无限循环!
这个是forcal进行编程的工具,对于需要此程序的人,希望能提供帮助
OpenFC能够编译运行具有固定格式的源程序(字符串表达式),源程序中可以使用C++风格的注释。源程序中可以使用的运算符有+、-、*、/、 ^、>、>=、<、、==、!=、&、|、!、++、--等等,具有数值计算、逻辑运算、关系...
数学和工程计算平台,采用forcal语言和内核,内置有丰富的范例可供参考,可广泛应用于数学建模,工程设计与计算,作图,程式设计等等,计算速度快而准确,让你解决问题不再感觉困难。