Kezdőoldal » Számítástechnika » Programozás » A processzor sebessége mennyir...

A processzor sebessége mennyire van hatással arra, hogy egy kód miként fut le rajta? (bővebben lent)

Figyelt kérdés

Gondolom, hogy ebben az esetben (amit mutatni fogok példaként - köszönet SimkoL megoldásáért - ) a magok száma nincs hatással a futási időre, csak a processzor órajele, vagy tévedek?

Például ez a kód i7 processzoron (vagy nagyobb teljesítményűn) hány mp alatt futna le?

Függ attól is, hogy eljárásokra, függvényekre van -e bontva a feladat (mert akkor azokat örökösen hívogatni kell, gondolom ez is idő?)

C nyelven gyorsabban futna az adott kód, vagy mennyire függ ez programozási nyelvtől? Szinte havonta adják ki az újabb és újabb C fordítókat, gondolom hogy processzor-optimalizálást is végeznek ilyenkor?


Én csak Pascal-hoz értek, optimalizálás nélkül 14, optimalizálással 11 mp alatt futott le a kód...


{$OPTIMIZATION REGVAR,LEVEL3}

program project1;


{$mode objfpc}{$H+}


uses {$IFDEF UNIX} {$IFDEF UseCThreads} cthreads, {$ENDIF} {$ENDIF} Classes,sysutils,dateutils;

type

TSS = (start,stop);


var

p: array[1 .. 12] of integer;

is_last: boolean;

n, lepes : longint;

{A későbbi tömbméret változtatás megkönnyítése érdekében a feltöltésnél

és a kiirásnál a Low illetve a High függvényeket használjuk a tömb alsó

és felső indexének eléréséhez}


{Feltölti a p tömböt az alsó és felső indexnek megfelelő értékekkel}

procedure Feltolt;

var i: byte;

begin

for i := Low(p) to High(p) do p[i] := i;

end;


{A paraméterként kapott két értéket megcseréli}

{ procedure Swap(var int_a, int_b: integer);

var int_c: integer;

begin

int_c := int_a;

int_a := int_b;

int_b := int_c;

end;}


{Kiírja a p tömb értékeit}

procedure Kiir;

var i: integer;

begin

for i := Low(p) to High(p) do Write(p[i], ' ');

{ Write(' ', lepes, '. variáció');}

WriteLn;

end;


procedure Next;

var j, m: longint;

c:longint;

begin

is_last := True;

j := n - 1;

{Jobbról megkeressük az első elemet, ami kisebb a nála jobbra állónál.

Ha van ilyen akkor az is_last logikai változót Hamisra állítjuk, jelezve

ezzel, hogy a tömb még nincs csökkenő sorrendbe rendezve, ugyanis ez a

módszer a növekvő jellegű tömbökre érvényes}

while (j > 0) do

begin

if p[j] < p[j + 1] then

begin

is_last := False;

{Ha találtunk a feltételnek megfelelőt kilépünk a ciklusból}

Break;

end;

Dec(j);

end;

{Ha a tömbünk még nincs tökéletes csökkenő formába rendezve, ami az

is_lastváltozó jelez akkor...}

if not is_last then

begin

{Növeljük a variációk számát jelző változót}

Inc(lepes);

{Jobbról megkeressük az első elemet, ami nagyobb, mint az előbb

kiválasztott j indexű elem}

m := n;

while m > j do

begin

{Ha találtunk a feltételnek megfelelőt kilépünk a ciklusból}

if p[m] > p[j] then Break;

Dec(m);

end;

{Megcseréljük a kettőt}

{ Swap(p[m], p[j]);}

c:=p[m];

p[m]:=p[j];

p[j]:=c;

{Megfordítjuk a (j+1)-től a sorozat végéig tartó szakaszt}

m := n;

Inc(j);

while j < m do

begin

{ Swap(p[j], p[m]);}

c:=p[j];

p[j]:=p[m];

p[m]:=c;

Inc(j);

Dec(m);

end;

end;

end;


procedure idomero(ss : TSS; ido : TDateTime);

const StartTime : TDateTime=0;

var dt : integer;

begin

case ss of

start: begin

starttime := ido;

Write('Start...');

end;

stop: begin

dt := MilliSecondsBetween(Ido, StartTime);

Write('Stop ,',dt/1000:7:4,' mp -');

end;

end;

end;



begin

idomero(start,time);

lepes := 1;

Feltolt; {Feltöltjük a p tömböt}

n := Length(p); {n := a p tömb mérete}

{Addig fut a ciklus, amíg a tömb még nincs csökkenő sorrendbe rendezve}

while not is_last do

begin

{ Kiir;}

Next;

end;

{ ReadLn;}

idomero(stop,time);

end.



2015. aug. 22. 08:36
 1/8 anonim ***** válasza:
100%

A futási sebesség függ az órajeltől, az operációs rendszertől, a futó feladatoktól, a memóriahasználattól, optimalizálástól, sőt, akár a HDD sebességétől is, ha onnan is kell anyagot beolvasni.


A CPU magok száma akkor számít, ha az alkalmazás több szálon fut - akkor minden szál a fenti adatoknak megfelelően fut.


Jól megírt és kioptimalizált program esetén a futási időben nem lesz különbség (jelentős). Managed nyelveknél igen, mivel ott a keretrendszer és a virtuális gép elvesz némi időt (java, és az összes .net-es nyelv), de az esetek legnagyobb részében ez az idő sem jelentős (vagy, észrevehető jól megírt program esetében).


A te kódod esetében a legtöbb időt szerintem a töménytelen tömbön végigfutó FOR veszi el - az optimalizálás pedig valószínűleg pár futást kivesz a programból, ezért lesz gyorsabb. DE ezek más nyelven sem lesznek sokkal gyorsabbak, hiszen itt sok körítés nem igazán van.

2015. aug. 22. 09:11
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:

Köszönöm a választ.

A RAM sebessége mennyire van hatással a futó programra (DDR 2 vagy 3 vagy 4 és órajele)? (gondolom hogy modern oprendszerek a kiterjesztett memóriába helyezik át az ilyen futó programokat és nem az alap 640 KB memóriában fut - nem is tudom hogy azt egyáltalán mi használja. :-)


Egyébként valamikor próbáltam a SHA1 algoritmust Pascal-ban, na ott azt hiszem tényleg nem volt különbség az optimalizált és nem optimalizált közt, gondolom annyian és úgy írták a kódot, hogy az egy letisztult algoritmus, mivel matematikusok írták és fontos volt, hogy minden eszközön a lehető leggyorsabb legyen...

2015. aug. 22. 09:30
 3/8 A kérdező kommentje:

Az általam bemásolt kód egy új, modern gépen mennyivel gyorsabban futna, mint nálam? Ez egy nagyon régi laptop, benne:

Amd Athlon (tm) II P320 Dual-Core Processor

2015. aug. 22. 09:49
 4/8 anonim ***** válasza:

Annyival gyorsabban amennyivel.

Nem lehet megmondani.

De általában ha egy kód lassú az nem a számítógépen, hanem a rosszul megírt kódon múlik.

2015. aug. 22. 11:56
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:

C++: data . hu/get/9033718/ConsoleApplication1.exe


De szerintem sem fog gyorsabban futni.

2015. aug. 22. 17:53
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:
Átírtad és ez annak a binárisa? Ha igen, akkor a forrást is megmutatod?
2015. aug. 22. 20:10
 7/8 A kérdező kommentje:
Hány DLL kell hozzá hogy elinduljon a program és ezek egyben letölthetőek valahonnan? (letöltöttem amit linkeltél).
2015. aug. 22. 20:26
 8/8 anonim ***** válasza:

Ha minden igaz a futtatásához csak ez fog kelleni:

[link]


A forráskód:

[link]

2015. aug. 22. 21:59
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!