Měření rychlosti programu a využití paměti
- Kartmen
- Nováček

-
- Registrován: 14. úno 2005
Měření rychlosti programu a využití paměti
Zacinam s programovanim a nevim, v cem nejlip zjistim, jak je kod dobre napsanej. Pokud je nekolik moznosti jak se dostat k cili, tak potrebuju najit tu, ktera zabere procesoru nejmin casu. Proste neco v cem po kazdej uprave kodu rychle zjistim jakej to melo vliv na rychlost a jak byla vyuzita pamet.
- sheriff.wiggum
- Začátečník

- Registrován: 08. dub 2005
- Bydliště: Skotsko/Ceska republika
- Kontaktovat uživatele:
- Kartmen
- Nováček

-
- Registrován: 14. úno 2005
- €agle
- Středně pokročilý

- Registrován: 13. lis 2003
- Bydliště: Vlastní 3D svět :)
- Kontaktovat uživatele:
- Kartmen
- Nováček

-
- Registrován: 14. úno 2005
QueryPerformanceCounter() to meri realnej cas jak to trvalo, nebo to i cas zohlednuje na kolik byl programem vyuzit procesor (pokud me treba bezi leccos na pozadi)?
A jeste teda neco, co to zmeri v tom VisualBasicu, co je v Excelu.
Nebo jak byste co nejlip napsali funkci, ktera treba porovnava dva ruzne dlouhe retezce znaku?
A jeste teda neco, co to zmeri v tom VisualBasicu, co je v Excelu.
Nebo jak byste co nejlip napsali funkci, ktera treba porovnava dva ruzne dlouhe retezce znaku?
- €agle
- Středně pokročilý

- Registrován: 13. lis 2003
- Bydliště: Vlastní 3D svět :)
- Kontaktovat uživatele:
No lze zmerit realnej cas behu aplikace, ale je to trosku slozitejsi, tady je kod:
Init zavolas na zacatku programu, pomoci ftime muzes kdykoli ziskat cas behu v double presnosti.
V normalnim VB by to jit melo (s patricnymi upravami), jelikoz QueryPerformanceCounter() je normalni funkce API, jestli to pujde i v tom Excelovskym netusim...
Na mereni vyuziti procesoru koukni sem a sem
Jinak co presne myslis tim porovnava dva ruzne dlouhe retezce znaku? Co chces jako zjistit? Kde se lisi, ktery je delsi, jestli jsou stejny, nebo co?
Kód: Vybrat vše
LARGE_INTEGER Rate, StartClock, EndClock;
double invRate;
void Init()
{
QueryPerformanceFrequency((LARGE_INTEGER*) &Rate);
invRate = 1.0 / (double) Rate;
QueryPerformanceCounter((LARGE_INTEGER*)&StartClock);
}
double ftime(void)
{
QueryPerformanceCounter((LARGE_INTEGER*)&EndClock);
return (double)(EndClock-StartClock)*invRate;
}
V normalnim VB by to jit melo (s patricnymi upravami), jelikoz QueryPerformanceCounter() je normalni funkce API, jestli to pujde i v tom Excelovskym netusim...
Na mereni vyuziti procesoru koukni sem a sem
Jinak co presne myslis tim porovnava dva ruzne dlouhe retezce znaku? Co chces jako zjistit? Kde se lisi, ktery je delsi, jestli jsou stejny, nebo co?
Eagle3D Engine under developement
Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
- Kartmen
- Nováček

-
- Registrován: 14. úno 2005
Sory, nak sem myslel, ze to je z toho jasny, ale porovnanim teda myslim retezec A (<>=) retezec B a ze jde o znaky (a chci jen jednoduchej priklad) tak jen pokud jsou shodny.€agle píše: Jinak co presne myslis tim porovnava dva ruzne dlouhe retezce znaku? Co chces jako zjistit? Kde se lisi, ktery je delsi, jestli jsou stejny, nebo co?
A konkretne je 1. seznam s cca 20000 retezcema delky od 14 do 22 znaku a 2. s cca 2000 delky od 14 do 22 znaku. A hleda se, kdy jsou retezce z 1. a 2. seznamu shodne. Pricemz kazdy retezec je v obou seznamech max. jednou.
- pavel.minarik
- Středně pokročilý

- Registrován: 03. čer 2003
- Bydliště: Brno
- Kontaktovat uživatele:
na ja, školní úloha, "předpokládejte, že každá řetšězec se může vystytovat nejvýše jednou", to je bohužel mimo realitu
další rada zní: dobře napsanej kód neexistuje, v dnešní době nároky na paměť nebo cpu time fakt neřeš, začni v klidu a v případě kritických aplikací optimalizuj, jinak není co řešit
další rada zní: dobře napsanej kód neexistuje, v dnešní době nároky na paměť nebo cpu time fakt neřeš, začni v klidu a v případě kritických aplikací optimalizuj, jinak není co řešit
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
- Kartmen
- Nováček

-
- Registrován: 14. úno 2005
No on tam muze bejt fakt max jednou (ty retezce sou uz vysledkem jinyho programu, kterej identicky retezce odstrani) a na mim 300Mhz vraku to fakt dost trva, tak sem jen chtel vedet lestli to de lip.pavel.minarik píše:na ja, školní úloha, "předpokládejte, že každá řetšězec se může vystytovat nejvýše jednou", to je bohužel mimo realitu
Mam to zatim napsany tak, ze nejprve se porovnaj delky retezcu a pokud sou stejne delky, tak pokud je retezec delsi nez 7 znaku (psal sem to obecne ne primo na to viz vyse), tak pokud se rovnaji 2 znaky (na nejvice menene casti retezcu - retezce muzou mit temer stejny pocatek, ale cim vic doprava tim vice se meni napr. aaaaaaaa, aaaaaaab, aaaaaaac, aaaaaaba..), tak se porovna cely retezec.
A jeste dotaz je v exelovskym VB, neco podobneho jako containery v C++.