2009年事情太多,一直在折腾房子,终于赶在房价高涨之前弄到了自己中意的房子,接着是装修,搬家,孩子上幼儿园,几乎没有时间写点自己的感悟。
我一直在研究Squirrel语言,在国内应该算先行者了,但是Squirrel从未大规模的在项目中应用,大概9月吧,我决定将Squirrel引入我负责的一个项目,这个项目是一个复杂的GUI程序,用于实时显示天空中中国民航飞行器的位置和轨迹,这是一个很有挑战性的课题。
项目使用wxWidget,核心部分自然是C++的,为了快速开发界面,我尝试将wxWidget封装到Squirrel中,从入手开始,封装工作进行的很顺利,大约2000行C++代码,就将基本的wxWidget封装到了Squirrel中,关键是效率问题。
随后的实验让我非常满意,Squirrel执行的效率的确很高,我将绘制中国地图的功能交由Squirrel脚本执行(大概需要绘制10000段线),结果令人惊讶,使用过程中根本无法察觉是脚本画图比C++慢。另外一个现象是在Squirrel中,将绘图数据包含在代码中似乎执行速度比将绘图数据存储在数组中再从数组这读取绘制要快,也就是说,Squirrel虚拟机并不是解释执行,而是编译过程中形成伪码,然后再执行,因此直接脚本执行代码要更快。
封装的wxWidget的Form和Widget在Squirrel上也运行很好,我已经将全部Form改成Squirrel脚本,在这个项目中,Squirrel脚本的长度超过了1000行,算是一个较大的Squirrel应用了。