技术层面看《易语言》与《易飞扬》

本文从技术角度探讨易语言及其新推出的易飞扬。尽管易语言因编译器性能受到批评,但其拥有独立的高质量编译器,能直接编译为CPU指令,无速度瓶颈和安全隐患,且编译器支持跨平台。文章将分析这些特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

技术层面看<易语言>与<易飞扬>:

易已经推出已经很多年了 +之最近 易飞扬的推出.因此不免评价一番,作为第一个稍微看的顺延的中文语言:

我曾经在有些言论中提到过易编译器很 '垃圾'.因此有不少人对我很不满意,但是依然固执己见,并对此进行一个简单的分析,为什么我会得出这个结论.

我们首先还是就易语言先进行一个分析: 首先我们选取官方的一个例子:

拥有自己的编译器
    易语言拥有自己独立的高质量编译器,源程序被直接编译为目的机器的CPU指令,不存在任何速度瓶颈和安全隐患。

          
    编译器是编程语言中最核心最关键的部分,易语言的编译器不仅效率高,而且可以编译出与操作系统平台无关的可执行代码。
              

          
然后我们对这个例子稍加改动:

 

.版本 2

.子程序 __启动窗口_创建完毕

Test1 ()
Test2 ()


.子程序 Test1
.局部变量 累加变量, 整数型
.局部变量 时间, 整数型

时间 = 取启动时间 ()
累加变量 = 0
.计次循环首 (100000000, )
    累加变量 = 累加变量 + 1
.计次循环尾 ()
时间 = 取启动时间 () - 时间
输出调试文本 (“Test1 Time Spend ” + 到文本 (时间) + “ MS”)

.子程序 Test2
.局部变量 累加变量, 整数型
.局部变量 时间, 整数型

时间 = 取启动时间 ()
累加变量 = 0
.计次循环首 (100000000, )
    累加变量 = 累加变量 + 2 - 1
.计次循环尾 ()
时间 = 取启动时间 () - 时间
输出调试文本 (“Test1 Time Spend ” + 到文本 (时间) + “ MS”)

注意Test1 与 Test 2的区别

我仅仅将+1 换成了 + 2 - 1.大家可以试图先猜测一下所花费的时间.

开始运行被调试易程序
* Test1 Time Spend 219 MS
* Test1 Time Spend 2386 MS

被调试易程序运行完毕

结果是不是另你吃了一惊?差了整整10倍。这里我都不去和C++ C语言甚至Delphi,C# 甚至VB这些比了。结果大家都知道。又是一个10倍的差距。

如果算一般的解释语言的话:如果差两倍还想得通。我们还是来看看汇编码:

Test1子程序的汇编码:

004032E9     55                     push ebp
004032EA     8BEC                   mov ebp,esp
004032EC     81EC 24000000          sub esp,24
004032F2     C745 FC 00000000       mov dword ptr ss:[ebp-4],0
004032F9     C745 F8 00000000       mov dword ptr ss:[ebp-8],0
00403300     68 00000000            push 0
00403305     BB 08030000            mov ebx,308
0040330A     E8 5A010000            call E与EF.00403469
0040330F     83C4 04                add esp,4
00403312     8945 FC                mov dword ptr ss:[ebp-4],eax
00403315     C745 F8 00000000       mov dword ptr ss:[ebp-8],0
0040331C     33C9                   xor ecx,ecx
0040331E     41                     inc ecx
0040331F     51                     push ecx
00403320     81F9 00E1F505          cmp ecx,5F5E100
00403326     0F8F 06000000          jg E与EF.00403332
0040332C     FF45 F8                inc dword ptr ss:[ebp-8]
0040332F     59                     pop ecx
00403330   ^ EB EC                  jmp short E与EF.0040331E

00403332     83C4 04                add esp,4
00403335     68 00000000            push 0
0040333A     BB 08030000            mov ebx,308
0040333F     E8 25010000            call E与EF.00403469
00403344     83C4 04                add esp,4
00403347     8945 EC                mov dword ptr ss:[ebp-14],eax
0040334A     DB45 EC                fild dword ptr ss:[ebp-14]
0040334D     DD5D EC                fstp qword ptr ss:[ebp-14]
00403350     DD45 EC                fld qword ptr ss:[ebp-14]
00403353     DB45 FC                fild dword ptr ss:[ebp-4]
00403356     DD5D E4                fstp qword ptr ss:[ebp-1C]
00403359     DC65 E4                fsub qword ptr ss:[ebp-1C]
0040335C     DD5D DC                fstp qword ptr ss:[ebp-24]
0040335F     DD45 DC                fld qword ptr ss:[ebp-24]
00403362     E8 5BFFFFFF            call E与EF.004032C2
00403367     8945 FC                mov dword ptr ss:[ebp-4],eax
0040336A     8BE5                   mov esp,ebp
0040336C     5D                     pop ebp
0040336D     C3                     retn

 

Test2子程序的汇编码:

0040336E     55                     push ebp
0040336F     8BEC                   mov ebp,esp
00403371     81EC 24000000          sub esp,24
00403377     C745 FC 00000000       mov dword ptr ss:[ebp-4],0
0040337E     C745 F8 00000000       m

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值