以下测试是基于 前人的程序: 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下编译的.
计时程序
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万位小数点查询
强烈推荐
- 英国代购-畅购英伦
- 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