program PascalTest;{$APPTYPE CONSOLE}uses
  SysUtils ,Windows;
function fib(const n:integer):integer;
begin
  if (n <= 2) then
result :=1
else
result := fib(n-1) + fib(n-2);
end;
var n:integer;
    bt, et :cardinal;
begin
  try
    { TODO -oUser -cConsole Main : Insert code here }
    if paramcount<1 then
    begin
      Writeln('usage: fib n'+Char(13));
      Writeln('Compute nth Fibonacci number'+Char(13));
    end
    else
    begin
      n :=StrToInt(paramstr(1));
      bt :=GetTickCount;
      Writeln(format('fib(%d) = %d'+Char(13),[n,fib(n)]));
      et :=GetTickCount;
      Writeln('time last:'+IntToStr(et-bt)+'ms');
    end;  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.用delphi XE :)编译,得到release版本,大小84K。
PascalTest 45
fib(45) = 1134903170
time last:24375ms
===========================================================================================================
#include <stdio.h>
#include <windows.h>int fib(n)
{
if (n <= 2)
return 1;
else
return fib(n-1) + fib(n-2);
}int main(int argc, char **argv)
{
int n,et,bt;
if (argc < 2) {
printf("usage: fib n\n"    "Compute nth Fibonacci number\n"); return 1;
}
bt=GetTickCount();
n = atoi(argv[1]);
printf("fib(%d) = %d\n", n, fib(n));
et=GetTickCount();
printf("time last:%dms",et-bt);
return 0;
}用code::blocks 编译,得到release版本,大小5.5K。
ctest 45
fib(45) = 1134903170
time last:24375ms
====================================================================================
pascal本来就是个超级低级语言嘛。
C代码没用vc编译。

解决方案 »

  1.   

    奶奶的,本来我也不做程序,一直用turbo delphi玩,前几天重新安装时候显示我的turbo delphi license过期了,turbo c++和turbo bds 2006没过期。这下可好,直接升级到XE玩了。XX他&%%&*((&*%%¥#¥##¥&*……&+——)*……¥#¥#
    哪个有条件帮我测试一下是不是这样?reg740.txt license是我一直保留的,turbo是我前两天从 turbomirror down的。
      

  2.   

    虽然我也是忠实,老资格的Delphi粉丝.
    但是我要说,现在的Delphi编译器优化上被最新的VC编译器甩得有点远了.
    查看两个编译器都开优化的编译结果,循环展开,分支处理这些点大部分都是VC胜出.Delphi只在少数几个点胜出.就CodeGear那几个人,下个版本Delphi我也不指望能在编译器优化上有什么改进,主要是64位编译器和跨平台能搞定我就谢天谢地了.
      

  3.   

    delphi的优化就算了,很多年前也是的确是遥遥领先,但是现在delphi的优化简直是渣,如果你仔细看过dcu的汇编代码就知道了更不提 浮点运算,浮点运算编译出来的汇编代码基本能当源代码读。
      

  4.   

    不用code::blocks,直接用gcc不加-g来编译,编译出来的文件可能会更小速度更快
      

  5.   

    想说明DelphiXE编译的结果大还是慢?
      

  6.   

    1.  请把CRT设成多线程DLL,否则这个结果是不客观的。
    2.  当你开发大型项目时,一个EXE上M是不可避免的,所以C编出这么小的程序说明不了什么问题。另外你要清楚:C根本是一个超级低级语言,你连概念都没有搞清楚。
      

  7.   

    我什么时候说过C不是超级低级语言呢?
    我测试这个的意思并没有贬低或者夸大任何语言和编译器。
    只是我在大数据量计算的时候,本来想用C开发,后来大概测试了一下,差不多就没用。
    我本意是pascal不参与OO的时候,只参与数值运算的时候基本和C效率一样的。
      

  8.   

    不好意思了,因为看到你说:pascal本来就是个超级低级语言嘛。
    还以为又是骂Delphi的贴子。都原生语言,普通的数值运算效率是同一级别的,浮点数可能比不上C的优化。