Kezdőoldal » Számítástechnika » Programozás » Hogyan mérjem le a végrehajtás...

Hogyan mérjem le a végrehajtási időt és a memória használatot pythonban?

Figyelt kérdés
Vannak az oktv II. kategória II. fordulójában feladatok. És itt van time és memory limit. Ezeket hogy mérjem le? Meg a teszteseteket meg lehet valahonnan szerezni?

2022. júl. 17. 21:02
 1/4 anonim ***** válasza:

Az OKTV hivatalos oldala:

[link]

az informatika-specifikus versenykiírás:

[link]

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:

[link]

aktuális memóriahasználatra beépítetten ott a ps:

[link]

vagy a top:

[link]

de egy adott folyamat memóriahasználatának vizsgálatához speciálisabb eszközt használnak - mint például a valgrind-et:

[link]

2022. júl. 17. 22:10
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
Nem kell pontosan lemérni. Ahol időkorlát van megadva ott az jelzés arra, hogy futásidőre optimalizált algoritmust kell alkalmaznod. Ilyeneknél egy O(n!) vagy O(n²) komplexitású algoritmus biztos nem lesz jó.
2022. júl. 17. 22:27
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:
#2 ezt eltudnád úgy mondani, hogy aki még nem csinált ilyet ő is megértse?
2022. júl. 17. 22:34
 4/4 anonim ***** válasza:

Ezt nehéz lenne egy válaszban összefoglalni, inkább linket küldök:

[link]


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.

2022. júl. 18. 09:20
Hasznos számodra ez a válasz?

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!