现代编译语言 整数计算性能比较: Delphi, C, C++, C#, JAVA


以下测试是基于 前人的程序: http://www.tempest-sw.com/benchmark/.

计算PI的程序在这里能找到 源代码. 测试机器的性能配置如下:

16GB RAM
Intel i7-4710HQ CPU @ 2.5GHz
64-bit Windows 10
1TB Samsung SSD

测试的PI程序主要是基于 整数计算. 分别设置到小数点后 1万 和 2万位. 并且测试了 写文件 和 纯计算.

以下为测试的编译器列表:

Delphi 7
Delphi 2007
Delphi XE8 x86
Delphi XE8 x64
Delphi 10 x86
Delphi 10 x64
VS2013 cpp x86
VS2013 cpp x64
VS2013 c x86
VS2013 c x64
MINGW 4.8.1 x86 c
MINGW 4.8.1 x86 cpp
VS2013 C#.NET 4.5 x86
VS2013 C#.NET 4.5 x64
JAVA8 x86
JAVA8 x64
VS2015 cpp x86
VS2015 cpp x64
VS2015 c x86
VS2015 c x64
VS2015 C#.NET 4.5 x86
VS2015 C#.NET 4.5 x64

测试结果

所有程序都是在 RELEASE下编译的.

performance-comparisons-between-modern-compilers 现代编译语言 整数计算性能比较: Delphi, C, C++, C#, JAVA 折腾 程序设计

performance-comparisons-between-modern-compilers

performance-comparisons-between-modern-compilers-chart 现代编译语言 整数计算性能比较: Delphi, C, C++, C#, JAVA 折腾 程序设计

performance-comparisons-between-modern-compilers-chart

计时程序

delphi-timing 现代编译语言 整数计算性能比较: Delphi, C, C++, C#, JAVA 折腾 程序设计

delphi-timing

DELPHI 计时方法是 调用 WIN32 API – GetTickCount

procedure TForm1.Run(const CmdLine: string);
var
  Start, Finish: Cardinal;
  Dir: string;
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  Start := GetTickCount;

  FillChar(StartupInfo, SizeOf(StartupInfo), 0);
  StartupInfo.cb := SizeOf(StartupInfo);
  Dir := ExtractFileDir(Path.Text);
  if not CreateProcess(PChar(Path.Text), PChar('"' + Path.Text + '" ' + CmdLine), nil, nil, True, 0, nil, PChar(Dir), StartupInfo, ProcessInfo) then
    RaiseLastOSError;
  WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
  Finish := GetTickCount;
  Results.Lines.Add(IntToStr(Finish - Start));
end;

procedure TForm1.RunBtnClick(Sender: TObject);
var
  I: Integer;
begin
  Screen.Cursor := CrHourglass;
  try
    Results.Clear;
    if CmdLines.GetTextLen = 0 then
      Run('')
    else
      for I := 0 to CmdLines.Lines.Count-1 do
        Run(CmdLines.Lines[I]);
  finally
    Screen.Cursor := crDefault;
  end;
end;

评论

  1. 现代编译器对整数计算优化都很成熟了
  2. DELPHI编译器各版本之前性能差别不大 但是文件大小却是越来越大 而且64位要普遍比32位的文件大小大.
  3. VS2015 的C代码编译器(32 和 64位) 性能最佳
  4. C代码比C++快
  5. JAVA 64位甚至比 DELPHI/C++ 原生代码快.
  6. C#很厉害,提升了十几倍了
  7. java很多年前就有直通cpu级别的优化了, 就是部分代码,非虚拟机执行,直接汇编转换执行

事先编译好的测试程序 包括计时程序

https://rot47.net/6K 6K 现代编译语言 整数计算性能比较: Delphi, C, C++, C#, JAVA 折腾 程序设计

下载下来 然后各位看官在自己的电脑上跑跑 看看结果是不是类似?

圆周率后 1万位小数点查询

https://helloacm.com/pi/

英文: https://helloacm.com/integer-computation-efficiency-comparisons-between-modern-compilers-case-study-pi-computation-delphi-java-c-c/

GD Star Rating
loading...
本文一共 360 个汉字, 你数一下对不对.
现代编译语言 整数计算性能比较: Delphi, C, C++, C#, JAVA. (AMP 移动加速版本)
上一篇: 快通过 PAYPAL ME 捐点给我吧
下一篇: GOOGLE ADSENSE 推出 匹配内容 单元

扫描二维码,分享本文到微信朋友圈
4e3cfb9ee99f8d8b0fdc505aa1822635 现代编译语言 整数计算性能比较: Delphi, C, C++, C#, JAVA 折腾 程序设计

评论