在Rad Studio 12.3 版本比较Delphi和C++ Builder的速度差异

 昨天更新了最新版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倍左右。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值