![]() |
|
|
#13
|
||||
|
||||
|
Вы не то тестировали. Ни для кого не секрет, что вывод через COUT в студии невероятно медленный. Я провел другой тест на вашем же примере:
Делфа: Код:
program D7Benchmark;
{$APPTYPE CONSOLE}
uses
SysUtils, DateUtils;
const
REPEAT_NUM = 10000000;
function Fact(N: integer):integer;
begin
if (N = 1) or (N = 0) then
Result := 1
else
Result := N * Fact(N - 1);
end;
type tin = array [0..0]of integer;
var
i : integer;
T1 : TDateTime;
j:^tin;
begin
getmem(j,100*sizeof(integer));
T1 := Now;
for i := 0 to REPEAT_NUM-1 do
j[i mod 100]:=Fact(i mod 2 + 14);
WriteLn('Num of calculatings:');
WriteLn(REPEAT_NUM);
WriteLn('Time of working is:');
WriteLn(MilliSecondsBetween(Now, T1));
WriteLn('PressEnter');
ReadLn;
end.Код:
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
const int REPEAT_NUM = 10000000;
int Fact(int N);
int _tmain(int argc, _TCHAR* argv[])
{
long c;
int i,*j;
j = new int[100];
c=clock();
for (i = 0; i < REPEAT_NUM; i++)
j[i%100] = Fact(i%2+14);
c=clock()-c ;
cout << "Time is: " << c << "\n";
cout << "Press ENTER..";
cin >> i;
return 0;
}
int Fact(int N)
{
if (N == 1 || N == 0)
return 1;
else
return N * Fact(N - 1);
}Результат: Делфи ХЕ - 1.7 сек, Студия - 0.9 сек. Такие сложности (с остатком от деления и записью в массив) для обмана оптимизации студии. Было так: Код:
for i:=1 to REPEAT_NUM do Fact(15); Потом сделал так: Код:
for i:=0 to REPEAT_NUM-1 do j[i mod 100]:=Fact(15); В результате сделал такой извратский тест. Последний раз редактировалось Bargest, 09.01.2012 в 15:19. |
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Dem0Men (03.02.2012)
| ||