现在的位置: 首页 > 综合 > 正文

小议“易语言.飞扬”的程序执行效率

2013年11月06日 ⁄ 综合 ⁄ 共 1295字 ⁄ 字号 评论关闭

我们自信“易语言.飞扬”的执行效率足够高。

在之前“易语言.飞扬”发布时,我们曾打算做一次比较正式的测试,拿EF的执行效率,跟C、C++、Java、C#进行比较,以此验证“易语言.飞扬”的效率究竟如何。最终我们中止了这项测试,因为我们发现几乎不可能得到一个让人信服的结果,进行效率测试所需要涵盖的范围太广了:浮点数运算、参数传递、方法调用、垃圾收集(GC)、类型装载、创建对象、输入输出、文本操作、文件操作、多线程/并发、网络、数据库、反射……即使从某个局部范围内证明“易语言.飞扬”比其它编程语言快,又能说明什么问题呢?无非是又得出一个被人们认为“哗众取宠”的结论而已。

C++跟C比,JAVA跟C++比,C#跟JAVA比,类似的执行效率上的比较,我们见的多了,也不泛大公司和著名试验室的参与。可是结论呢?有没有明确的结论?我只看到不同阵营的人互相争论、嘲笑、漫骂、忽悠、扯皮 ……不是不认可垃圾收集(GC)吗?不是不认可虚拟机吗?可是JAVA和C#发展的很好啊。不是认为脚本解释执行太慢了吗?可是Python、Ruby也一样很火啊。

我们不想再趟这片浑水了。

也许我们无法证明“易语言.飞扬”比其它编程语言(C/C++/Java/C#)快,但我们也无法容忍别人毫无顾忌的说“易语言.飞扬”太慢。我们只想强调EF的执行速度“足够快”。至于“足够快”是多快,呵呵,也许是,足以满足用户需求,和其它编程语言没有太大的差距(如果被证明比其它慢)。

前面说了,完整的效率比较是一项大工程,是几乎不可能完成的任务。我勉为其难,只写一个最最简单的测试代码:

公开 类 启动类
{
    公开 静态 启动()
    {
        
int sum = 0;
        
int time = 运行环境.取启动时间();

        for(int i = 0; i < 100000000; i++)
        {
            sum 
= sum + i;
        }

        控制台.输出行(运行环境.取启动时间() - time);
        控制台.输出行(
"sum = " + sum.到文本());
    }
}

三次运行结果分别是(单位为毫秒(ms)):469, 469, 453,平均值为 463 (ms)。
运行环境:Windows XP SP2, AMD 1.6G, 1G RAM, EF1.1.x。

功能几乎相同的代码,在易语言中的三次执行结果分别是:3422, 3438, 3406,平均值为 3422 (ms)。

也许这么简单的代码并不能说明什么问题。但是,“易语言.飞扬”的执行效率比易语言快,却是早在意料之中的。如果深入了解过“EF对象模型(EFOM)”,接触过EFNDK(EF本地类库开发包),或者反汇编过EF编译器生成的代码,对这个结果应该不会感到惊讶。我们的自信正源自于此。(注:EFOM、EFNDK均未公开发布,等待时机成熟。)

我们并不片面地追求绝对的高效。EF的介绍中有一句“高效实用”,对了,以“实用”为前提。

 (就目前而言,“易语言.飞扬”编译器生成的代码,尚未经过刻意优化。)

 

抱歉!评论已关闭.