Tue, 22 Aug 2006 16:00:30 +0200

Suller András <2naus@freemail.hu>

Re: [Java lista] Re: thread sleep kérdés


javalist@javasite.bme.hu írta:
> *** Felado: Köteles Ferenc <fecuska@freemail.hu> ***
> 
> On Tue, 22 Aug 2006 14:13:18 +0200 (CEST)
> javalist@javasite.bme.hu wrote:
> 
>> Nem beszélve arról, hogy Windows alatt legjobb tudomásom szerint nem
>> lehet 10ms-nál rövidebb időt mérni. Vagy legalábbis a javaval nem
>> tudsz annál rövidebb ideig sleepelni.
> linux alatt fog futni a dolog...
> 

Nem hiszek nektek, ezért leteszteltem :)

Ez volt a teszt:
     long t0 = System.currentTimeMillis();
     for(int i=0; i< 1000; i++) {
       Thread.sleep(1);
     }
     long t1 = System.currentTimeMillis();
     System.out.println("time: "+(t1-t0)+" msec");

Ez windows-on (xp) is és linuxon (debian) is majdnem pontosan 2000 
msec-et írt ki.
Csodálkoztam is rajta, hogy vajon miért nem 1000-hez közeli ez a szám, 
ezért próbálgattam, hogy a sleep(1)-et növelgettem (sleep(2), 
sleep(3),...), és a tapasztalat azt mutatja, hogy 1000 msec-el tart 
tovább a művelet, mint ahogy vártam volna.
Magyarul: egy Thread.sleep() hívás 1 msec plusz kötséggel jár.

Viszont kíváncsi lennék, hogy ez a teszt program ugyanilyen eredményeket 
produkál-e más architektúrákon? Akinek van rá lehetősége, kérem hogy 
próbálja ki, és tegye közzé, mert érdekelne :)
Én 32 bites intel környezetben mértem.

Köszi,
psmith

nem vagyok feliratkozva