Kezdőoldal » Számítástechnika » Programozás » Egy program futása jelentősen...

Egy program futása jelentősen gyorsabb lehet, ha nem szedem szét függvényekre és eljárásokra a feladatot, hanem a főprogramban írom meg őket?

Figyelt kérdés

A függvények és eljárások (ha azokat sokszor meg kell hívni a feladat végrehajtása során) sok futási időt jelenthetnek?

Régebben tapasztaltam ilyet, azért jutott eszembe, hogy komplettebb, összetettebb algoritmusoknál tapasztalt -e valaki ilyet.

Pascal-tapasztalatok érdekelnének, de az is, hogy a többi programozási nyelvben hogy van ez.



2015. nov. 9. 07:21
1 2
 1/11 anonim ***** válasza:
91%
nem!!
2015. nov. 9. 07:23
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:

Értem, ennél részletesebb válaszra gondoltam. Én konkrétan tapasztaltam, hogy amikor a főprogramba írtam azt, amit az eljárásnak vagy függvénynek kellett volna elvégeznie, jelentősen több volt a futási idő.

Amint az 5-6 eljárást a főprogramban oldottam meg, felgyorsult.

2015. nov. 9. 07:25
 3/11 anonim ***** válasza:

Ez tipikusan egy olyan felvetés/feltevés, amit ki tudsz próbálni.


Szerintem ha lesz is gyorsulás, az olyan minimális, amiért nem éri meg átláthatatlan, összehányt kódot gyártani.

2015. nov. 9. 07:58
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:
Tul sokat nem szamit, viszont az igen, hogy 10 helyett csak 1 helyen kell atirni a kodod.
2015. nov. 9. 07:59
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:

#3 vagyok


Ja, ki is próbáltad, most olvasom. Azért megoszthatnád a futásidőket (különösen a különbségüket) és a kódokat.

2015. nov. 9. 08:00
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:
A Pascal fordító borzalmas volt régen és ez a kézzel történő inline-ing gyorsított rajta. Erre én is emlékszem, de normális fordítónál nem lenne különbség (vagy gyorsabb lenne).
2015. nov. 9. 08:06
Hasznos számodra ez a válasz?
 7/11 Tengor ***** válasza:

Egyrészt biztosan gyorsabb, ha nem kell ugrálni a függvények között. Másrészről viszont mivel csak egy kiíratás is több függvényt hív meg, a kódodból kikerülő hívások számra szinte biztosan elenyészik a keret miatt adódó hívások számához képest.

A másik, hogy ezzel nagyban megnő a fejlesztési idő és sokkal nehezebben olvasható a kód. Ritka az a feladat, ahol ez megtérül.

2015. nov. 9. 09:31
Hasznos számodra ez a válasz?
 8/11 A kérdező kommentje:

Teljesen változó az időintervallum, de az eljáráshívásos mindig később fut le, nagyobb darabszámra átírva az "n" konstanst mégjobban kitűnik ez.


Lehet, hogy az FPC 3.0 RC2 alatt már nincs ez a hiba, kioptimalizálták esetleg, de ez nem biztos.


{$OPTIMIZATION REGVAR,LEVEL3} {$R-} {$mode objfpc}{$h+}

program eljaras_eljarasnelkul;


uses SysUtils;


const

n = 99000;


var

tomb, tomb2 : array [0..n] of longint;

i, j, temp : longint;

DT, DT2 : TDateTime;


procedure csere;

begin

temp := tomb[i];

tomb[i] := tomb[j];

tomb[j] := temp;

end;


begin

randomize;

for i := 0 to n do

tomb[i]:=random(2100000000);

tomb2:=tomb;

dt := now;

for i := 0 to n -1 do

begin

for j := i +1 to n do

begin

if tomb[i] > tomb[j] then

begin

temp := tomb[i];

tomb[i] := tomb[j];

tomb[j] := temp;

end;

end;

end;

dt2 := now;

WriteLn('Eljáráshívás nélkül: Eltelt idő: ',(DT2-DT)*24*3600:0:2,' sec');

tomb:=tomb2;

dt := now;

for i := 0 to n -1 do

begin

for j := i+1 to n do

begin

if tomb[i] > tomb[j] then csere;

end;

end;

dt2 := now;

WriteLn('Eljáráshívással: Eltelt idő: ',(DT2-DT)*24*3600:0:2,' sec');

ReadLn;

end.

2015. nov. 9. 13:17
 9/11 anonim ***** válasza:

A függvényhívásoknak nyilván van járulékos költségük, így hosszabb a futásideje egy függvényhívás alkalmazó megoldásnak. De nem jelentősen.

Ha gyorsabb kódot akarsz, akkor nem ilyen gányolós megoldásokon kell gondolkoznod, hanem egy hatékonyabb algoritmust kell keresned.

A buborékrendezés helyett alkalmazz quick sortot és azt már tényleg lehet jelentős sebességkülönbségnek nevezni.

2015. nov. 10. 08:19
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:
Az összetett algoritmusok nem futnak olyan gyorsan le, hogy a függvényhívás problémás legyen. A rövid egyszerű függvények pedig optimalizálásra kerülnek bizonyos nyelveknél.
2015. nov. 10. 11:01
Hasznos számodra ez a válasz?
1 2

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

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!