Parancs lefutási sebesség ellenõrzése

Indította SnooP, 2014. augusztus 13. - 20:56:44

Előző téma - Következő téma

SnooP

Sziasztok. Milyen módon lehet ellenõrizni az, hogy két parancs közül melyik fut le gyorsabban. Én Tickcountra saccolok, de azért gondoltam rákérdezek itt is. Válaszokat elõre is köszönöm.

TengeriMalac


SnooP

Valahogy nem tudom megmérni :D
Akkor kérdeznék konkrétan egy példával és így legalább érthetõ lesz: Van egy számunk legyen ez most a 183 és én ebbõl addig vonnék ki 60-at amíg az eredmény kisebb nem lenne 59-nél. A kérdés az, hogy ezt hogyan gyorsabb és lagmentesebb végezni?
1. Változat: Elosztom a számot 60-al. Amennyi kijön (3) beszorzom hatvannal, majd kivonom a 183-ból. (azért osztom és szorzom is 3-al, mert nekem a 3-as szám is kell, vagyis a hányadosra is szükségem van)
2. Változat: Beállítok egy ciklust aminek az értéke 60 és minden lefutásnál kivon a 183 ból 60-at egészen addig ameddig az eredmény kevesebb lesz 60-nál.
Melyik a jobb megoldás? Esetleg ezek gyorsabban és lagmentesebben mûködnek mint a timerek?

KovaNovik

new count = GetTickCount();
//valami valami
printf(\"Eltelt idõ (tickben, ami nem ms!): %d\", GetTickCount() - count);

 
Magyarul a végén aktuális gettickcountból kivonod az elõtte lévõt.
A leggyorsabb módszer a hányados megszerzésére (nem biztos, hogy jó):
 
183 % 60

 
183 osztva hatvannal maradéka

SnooP

Na közben alávetettem egy kis tesztelés/terhelésnek, a ciklus elvérzik nagyobb terhelés alatt. Az alap matek mûvelet viszont kõkeményen és bugtalanul és gyorsabban elvégzi a feladatot :D
Amúgy nem értem, hogy mondjuk mi a különbség a:
 
183 / 60

 és a
183 % 60

 között ugyan az a végeredmény :D

KovaNovik

Pech, hogy 183-ban a 60 megvan háromszor, három maradékkal. :D

SnooP

Épp ezért szorzunk vissza a hányadossal és kivonjuk az eredeti számból és megkapjuk a maradékot is. Sajnos ez a legkönnyebb módszer és nincs rövidebb / gyorsabb megoldás. :D