Hogyan mérjem le a végrehajtási időt és a memória használatot pythonban?
Az OKTV hivatalos oldala:
az informatika-specifikus versenykiírás:
bár nem sokat írnak az értékelés pontos módjáról, de a környezetet leírják:
"Az értékelés Linux (Ubuntu 20.04) operációs rendszer alatt működik, ezért a program nem használhat platform-specifikus (pl. windows-os) elemeket."
Linux alatt a futás idejének meghatározására ott a time parancs:
aktuális memóriahasználatra beépítetten ott a ps:
vagy a top:
de egy adott folyamat memóriahasználatának vizsgálatához speciálisabb eszközt használnak - mint például a valgrind-et:
Ezt nehéz lenne egy válaszban összefoglalni, inkább linket küldök:
Illetve egy egyszerű példa:
A 2021/2022-es második forduló első feladata ("Számjegy keverés"), aminél az időlimit 0.25 s.
Ha ennél a feladatnál a brute force módszert programozod le, azaz hogy előállítod a számjegyek összes permutációját és ezeken minden végigmész, akkor még egy 10 jegyű szám esetén nagyon hosszú ideig fog futni a programod, ráadásul a feladatkiírásban benne van, hogy 10000 jegyű számra is le kell futni az algoritmusnak! Mindenféle időmérés nélkül belátható, hogy ez az algoritmust nem elég, jobbat kell találni.
Ez egy egyszerű feladat, valószínűleg már magadtól is rájöttél, hogy elég annyit csinálni, hogy a szám nemnulla számjegyeit növekvő sorba rendezed, a 0-kat a végére rakod, ez lesz a számjegyekből előllítható legkisebb szám, amiből pont ennyiszer kell egyet kivonni -> megvan az eredmény.
A két megoldás futásideje között nagyságrendbeli a különbség, az első nagy számoknál akár órákig is futhat, a második millisecundumok alatt fut le. Nem mindenféle bitmágus trükkökkel kellett bűvészkedni, hanem csak a megfelelő algoritmust megtalálni. Ezeknek a feladatoknak ez a kulcsa.
Meg szerintem kérdezd meg az felkészítő tanárodat, ő is sokat tud segíteni, ha végigmentek a korábbi kérdéseken.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!