昨天更新了最新版Delphi 12.3版本
听说对C++ Builder 的编译器“做出了巨大改进” ,测试一下。
测试代码
C++
#include <iostream>
#include <chrono>
#include <cmath>
#include <tchar.h>
// 进行复杂计算的函数
double complexCalculation1()
{
double sum = 0.0;
// 增加循环次数和计算复杂度来延长时间
for (int i = 0; i < 100000000; ++i) {
sum += std::pow(99.0, 2.0);
}
return sum;
}
double complexCalculation2()
{
double sum = 0.0;
// 增加循环次数和计算复杂度来延长时间
for (int i = 0; i < 100000000; ++i) {
sum += std::pow(100.0, 2.0);
}
return sum;
}
double complexCalculation3()
{
double sum = 0.0;
// 增加循环次数和计算复杂度来延长时间
for (int i = 0; i < 100000000; ++i) {
sum += std::pow(101.0, 2.0);
}
return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
auto start = std::chrono::high_resolution_clock::now();
double result1 = complexCalculation1();
double result2 = complexCalculation2();
double result3 = complexCalculation3();
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> elapsed = end - start;
std::cout << "计算耗时: " << elapsed.count() << " 秒" << std::endl;
std::cout << "计算结果: " << result1 << std::endl;
std::cout << "计算结果: " << result2 << std::endl;
std::cout << "计算结果: " << result3 << std::endl;
return 0;
}
Delphi
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
System.DateUtils,
Math;
function complexCalculation1(): Double;
var
i: Integer;
sum: Double;
begin
sum := 0;
// 增加循环次数和计算复杂度来延长时间
for i := 0 to 100000000 do
sum := sum + Power(99, 2);
complexCalculation1 := sum;
end;
function complexCalculation2(): Double;
var
i: Integer;
sum: Double;
begin
sum := 0;
// 增加循环次数和计算复杂度来延长时间
for i := 0 to 100000000 do
sum := sum + Power(100, 2);
complexCalculation2 := sum;
end;
function complexCalculation3(): Double;
var
i: Integer;
sum: Double;
begin
sum := 0;
// 增加循环次数和计算复杂度来延长时间
for i := 0 to 100000000 do
sum := sum + Power(101, 2);
complexCalculation3 := sum;
end;
var
startTime, endTime: TDateTime;
result1, result2, result3: Double;
begin
startTime := Now;
result1 := complexCalculation1();
result2 := complexCalculation2();
result3 := complexCalculation3();
endTime := Now;
Writeln('计算耗时: ', MillisecondsBetween(endTime, startTime) / 1000.0, '秒');
Writeln('计算结果: ', result1);
Writeln('计算结果: ', result2);
Writeln('计算结果: ', result3);
Readln;
end.
测试结果
C++
Delphi
说明
未必严谨准确,粗略比较差了10倍左右。