這是用E語言編譯的,因?yàn)槲矣玫?.05試用版本,沒有辦法生成EXE文件,,只能在E語言環(huán)境 下運(yùn)行
這是E語言的代碼:
.版本 2
.程序集 窗口程序集1
.子程序 _按鈕1_被單擊
.局部變量 時(shí)間1, 長整數(shù)型
.局部變量 時(shí)間2, 長整數(shù)型
.局部變量 結(jié)果, 整數(shù)型
.局部變量 到文本, 整數(shù)型
時(shí)間1 = 取啟動(dòng)時(shí)間 ()
結(jié)果 = SumTimes (到數(shù)值 (編輯框1.內(nèi)容))
時(shí)間2 = 取啟動(dòng)時(shí)間 () - 時(shí)間1
編輯框2.內(nèi)容 = 編輯框2.內(nèi)容 + 到文本 (結(jié)果) + “次累加運(yùn)算耗費(fèi):” + 到文本 (時(shí)間2) + “毫秒” + #換行符
.子程序 SumTimes, 長整數(shù)型
.參數(shù) timer, 長整數(shù)型
.局部變量 結(jié)果, 長整數(shù)型
結(jié)果 = 0
.計(jì)次循環(huán)首 (timer, )
結(jié)果 = 結(jié)果 + 1
.計(jì)次循環(huán)尾 ()
返回 (結(jié)果)
這是delphi 2007編譯的EXE文件,可以看出差好多了
這是delphi的代碼:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
btnAdd: TButton;
Label1: TLabel;
Memo1: TMemo;
procedure btnAddClick(Sender: TObject);
private
{ Private declarations }
function SumTimes(i:Integer):string;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnAddClick(Sender: TObject);
var
dEnd:real;
dStart:Integer;
str:string;
begin
dStart:=GetTickCount;
str:=SumTimes(strToInt(trim(Edit1.Text)));
dEnd:=GetTickCount-dStart;
memo1.Lines.Add(edit1.Text+'次累加運(yùn)算耗費(fèi):'+floattostr(dEnd)+' 毫秒');
end;
function TForm1.SumTimes(i: Integer):string;
var j,m:integer;
begin
for j := 0 to i - 1 do
begin
m:=m+1;
end;
result:=inttostr(m);
end;
end.
這是我用C# 2005的測(cè)試程序,,大家可以測(cè)試下,。
下面是C#的代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace cSharpTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//System.DateTime currentTime = new System.DateTime();
int iStart, iEnd;
long st;
iStart = Environment.TickCount;
st = SumTimer(long.Parse(textBox1.Text));
//System.DateTime currentTime1 = new System.DateTime();
iEnd = Environment.TickCount - iStart;
rtb.AppendText(textBox1.Text + "次累加運(yùn)算耗費(fèi):" + iEnd.ToString()+" 毫秒\n");
}
private long SumTimer(long s)
{
long m=0;
for (long i = 1; i <= s; i++)
{
m += 1;
}
return m;
}
}
}
結(jié)論:這幾個(gè)編譯器,可以看出效率最高的是直接編譯成機(jī)器碼的delphi,,他所編譯出的代碼大?。?18K)。但是C#和E語言都不是直接編譯成機(jī)器碼,,所以沒有什么可比性,,但是E語言的效率比C#高確實(shí)有點(diǎn)驚喜!
測(cè)試文件:
c# 編譯的文件:點(diǎn)次下載 http://dl2.csdn.net/down4/20070628/28050252199.exe
delphi 編譯的文件:點(diǎn)次下載 http://http://dl2.csdn.net/down4/20070628/28050658854.exe
本文來源:http://blog.csdn.net/wjames2000/archive/2007/06/28/1669668.aspx