小赖子的英国生活和资讯

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

阅读 桌面完整版

现在的编译器已经非常强大, 在大多数情况下, 开发者无需手动进行底层代码优化. 正如计算机科学家 Donald Knuth 所说: “过早优化是万恶之源”. Pre-optimisation is the root of evil.

过早关注细节优化, 反而可能导致代码复杂度增加, 降低可读性和可维护性. 与其过度纠结于微小的性能提升, 不如专注于编写清晰/可扩展的代码, 并在真正的性能瓶颈显现后, 基于数据进行针对性的优化. 现代软件开发更强调架构设计/算法选择和合理的数据结构, 这些往往比局部优化更能带来实质性的性能提升.

以下测试是基于: 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 C++ C++ Delphi / Turbo Pascal 折腾 数据结构与算法 程序设计 算法 计算机 计算机

performance-comparisons-between-modern-compilers

performance-comparisons-between-modern-compilers-chart 现代编译语言: 整数计算性能比较: Delphi, C, C++, C#, JAVA C++ C++ Delphi / Turbo Pascal 折腾 数据结构与算法 程序设计 算法 计算机 计算机

performance-comparisons-between-modern-compilers-chart

计时程序

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

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

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

https://helloacm.com/pi/

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

聪明的程序员用Delphi

Delphi(VB Killer)是一种编程语言,它是由Borland公司于1995年推出的。Delphi是一种基于Pascal的高级编程语言,它是一种面向对象的编程语言,它是一种结构化编程语言,它是一种事件驱动的编程语言。也被称为Object Pascal。

强烈推荐

微信公众号: 小赖子的英国生活和资讯 JustYYUK

阅读 桌面完整版
Exit mobile version