现在的编译器已经非常强大, 在大多数情况下, 开发者无需手动进行底层代码优化. 正如计算机科学家 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

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;
评论
- 现代编译器对整数计算优化都很成熟了
- DELPHI编译器各版本之前性能差别不大 但是文件大小却是越来越大 而且64位要普遍比32位的文件大小大.
- VS2015 的C代码编译器(32 和 64位) 性能最佳
- C代码比C++快
- JAVA 64位甚至比 DELPHI/C++ 原生代码快.
- C#很厉害,提升了十几倍了
- java很多年前就有直通cpu级别的优化了, 就是部分代码,非虚拟机执行,直接汇编转换执行
事先编译好的测试程序 包括计时程序
下载下来 然后各位看官在自己的电脑上跑跑 看看结果是不是类似?
圆周率后 1万位小数点查询
聪明的程序员用Delphi
Delphi(VB Killer)是一种编程语言,它是由Borland公司于1995年推出的。Delphi是一种基于Pascal的高级编程语言,它是一种面向对象的编程语言,它是一种结构化编程语言,它是一种事件驱动的编程语言。也被称为Object Pascal。- Delphi编程语言三十周年了!
- 回顾20年前时高中参加信息学奥赛(NOIP)的经历
- Delphi 软件分享: 智慧中国象棋 (Chinese Chess)
- Pascal 编程语言之父 尼克劳斯·沃斯 Niklaus Wirth RIP
- DELPHI 2007 编译速度 16万行每秒
- 公司 购买 正版 DELPHI XE8 软件 并附送 一套 DELPHI 2007
- 软件分享 - Delphi7 绿色精简版
- 公司购买 FIX-INSIGHT - DELPHI 静态代码分析工具
- 升级到 Delphi 10 西雅图
- 现代编译语言 整数计算性能比较: Delphi, C, C++, C#, JAVA
- DELPHI 2007 下的 PARALLEL FOR 实现
- 搞活动: Delphi 10.1 Berlin Starter 免费使用!
强烈推荐
- 英国代购-畅购英伦
- TopCashBack 返现 (英国购物必备, 积少成多, 我2年来一共得了3000多英镑)
- Quidco 返现 (也是很不错的英国返现网站, 返现率高)
- 注册就送10美元, 免费使用2个月的 DigitalOcean 云主机(性价比超高, 每月只需5美元)
- 注册就送10美元, 免费使用4个月的 Vultr 云主机(性价比超高, 每月只需2.5美元)
- 注册就送10美元, 免费使用2个月的 阿里 云主机(性价比超高, 每月只需4.5美元)
- 注册就送20美元, 免费使用4个月的 Linode 云主机(性价比超高, 每月只需5美元) (折扣码: PodCastInit2022)
- PlusNet 英国光纤(超快, 超划算! 用户名 doctorlai)
- 刷了美国运通信用卡一年得到的积分 换了 485英镑
- 注册就送50英镑 – 英国最便宜最划算的电气提供商
- 能把比特币莱特币变现的银行卡! 不需要手续费就可以把虚拟货币法币兑换
微信公众号: 小赖子的英国生活和资讯 JustYYUK