Alábbi Pascal kód milyen gyorsan futna le Intel Core i3-i5-i7 processzorokon? Ha ilyen van a gépetekben, megnézitek?
Érdekelne az is, hogy mi a különbség e kód futási idejében akkor ha Skylake-nél régebbi Core processzorokon fut és ha Skylake-en.
{$OPTIMIZATION REGVAR,LEVEL 3}
program primszam;
uses SysUtils;
var n, v, i : longint;
prime : boolean ;
dt, dt2 : TDateTime;
begin
n := 4;
dt := now;
repeat
v := Trunc(Sqrt(n)) + 1;
prime := (n mod 2) <> 0;
i := 3;
while(prime) and (i <= v) do
begin
prime := (n mod i) <> 0;
Inc(i, 2);
end;
inc (n);
until(n = 25000000);
dt2 := now;
WriteLn('Eltelt ido: ',(DT2-DT)*24*3600:0:2,' sec');
ReadLn;
end
FPC 3.0 és i3-4030U (1.86GHz)
Teljesítménycentrikus energiasémával - 19.46s
Kiegyensúlyozott sémával - 19.48s
Energiatakarékos sémával (1.46GHz) - 24.73s
Szia.
FPC 2.6.4 fordítóval lefordított exe futásideje :
Intel (R) Core (TM) 2 Duo CPU E8400 @ 3.00 Ghz : 11.98 s
Intel (R) Core (TM) I5-3470S CPU @ 2.9 Ghz : 10.58 s
Sok sikert.
üdv.
Hmm meglepett, hogy egy gyengébb dualcore gépen gyorsabban futott le, mint a Core i5 processzorokon fentebb.
Másik dolog hogy én azt vettem észre: FPC 3.0 fordítóval a kód legalább 5 másodperccel gyorsabban fut le mint az előző stabil változat esetén, nem tudom mit optimalizálhattak.
#3-as vagyok megint, kíváncsi voltam előző FPC verzióra (mielőtt visszaadom a takarításra odaadott laptopot a tulajdonosának):
FPC 2.6.4 és i3-4030U (1.86GHz)
Teljesítménycentrikus energiasémával - 19.8s körül
Kiegyensúlyozott sémával - 20.3s körül
Energiatakarékos sémával (1.46GHz) - 26.3s körül
(párszor lefuttatva tizedmásodperces eltérések voltak)
Delphi XE
i7-6700HQ:
Debug build: Eltelt ido: 11.28 sec
Release build: Eltelt ido: 8.87 sec
i7-4670HQ:
Debug build: Eltelt ido: 12.12 sec
Release build: Eltelt ido: 9.16 sec
i7-3236QM:
Debug build: Eltelt ido: 14.45 sec
Release build: Eltelt ido: 10.32 sec
Ahh, még jó, hogy idenéztem, látszik, hogy álmos vagyok.
4720 és 3632 a procik, bocs.
Kicsit játszottam a kóddal, még lehetett belőle lefaragni,
már az időből :)
Trunc + Sqrt + +1 assemblerben picit javít rajta, már
ha FPC más módon oldaná meg.
const one : Int32 = 1;
Function sqrt2(const X: Single): integer; register;
asm fld X
fsqrt
fiadd one
fistp @Result
fwait
End;
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!