Hallo

Welkom, Gast. Alsjeblieft inloggen of registreren.

Recent

491 gasten, 0 leden

Welkom, Gast. Alsjeblieft inloggen of registreren.

27 april 2024, 08:00:11

Login met gebruikersnaam, wachtwoord en sessielengte

Nieuws

Welkom op het vernieuwde NL Computer Forum!

Auteur Topic: GetTickCount (microseconden)  (gelezen 9107 keer)

0 leden en 2 gasten bekijken dit topic.

Offline NLCOMP

  • Forumheld
  • *****
  • Berichten: 14.666
    • NL Computer Forum
GetTickCount (microseconden)
« Gepost op: 9 november 2009, 19:49:01 »
Bericht 1 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Stefan de Best (Sysop)Datum:08-11-2005
 Aan:AllenMsgID:2581.1
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi,
Een programma wat ik aan het schrijven ben gebruikt de instructie GetTickCount om te berekenen hoe snel iets van Internet wordt gedownload. GetTickCount geeft een waarde in microseconden terug en is tevens de tijd (in ms dus) hoe lang Windows al draait sinds hij is opgestart. Deze waarde wordt opgeslagen in een variabele van het type integer.
Nou las ik laatst ergens dat als de waarde een bepaalde limiet heeft bereikt dat hij automatisch weer op nul springt. Dit wilde ik wel eens testen. Ik was nog maar bij week 2, dus Windows moest nog even een paar weken langer draaien.
Bij dag 25 ofzo begon mijn programma te mekkeren. Dat bleek te liggen aan het feit dat ik de waarde die GetTickCount teruggeeft in een variabele van het type
integer had opgeslagen. Een integer in de programmeeromgeving waarmee ik werk kan een maximale waarde hebben van 2147483647. Bij dag 25 was dus de maximale waarde bereikt en begon mijn programma te mekkeren. Nadat ik de integer had veranderd in Extended-type ging het prima (max. bereik : 1.1 x 10^4932) .
Op naar wanneer die waarde op nul springt...
Dit bleek blijkbaar al na een aantal dagen (+/- 5) zo te zijn. Althans, dat denk ik want toen ik van mijn werk kwam en een toets indrukte om de beeldschermen in te schakelen bleek dit dus niet te lukken! Geen enkele toets zorgde ervoor dat die beeldschermen aan gingen.
De enige mogelijkheid was een nog een hardware-reset van de computer. Ja, en dán springt die teller inderdaad weer op nul! <bg>
Nadat de computer opnieuw was opgestart....en de teller dus weer op nul begon ...bleek dat Windows XP een configuratie-instelling was 'vergeten', te weten: Beeldscherm uitschakelen (bij Schermbeveiliging --> Energie van Beeldscherm). Deze stond op "Nooit", terwijl ik altijd "Na 10 minuten" had.
Ik vraag me af; is het niet simpeler om gewoon softwarematig die teller op nul te zetten? ;-)

Stefan

    Overzicht van 150 oude en minder bekende zwemslagen
    http://tinyurl.com/yuojv[/]

 


Bericht 2 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:08-11-2005
 Aan:Stefan de Best (Sysop)MsgID:2581.2
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Stefan,

>>Ik vraag me af; is het niet simpeler om gewoon softwarematig die teller op nul te zetten?<<

Ik snap niet wat je bedoeld.
GetTickCount geeft inderdaad een waarde terug in ms vanaf computerstart.
Als je iets gaat downloaden bepaal je de starttijd en eindtijd door de waarde van GetTickCount op te vragen en het verschil is dan de downloadtijd in ms. Tussendoor zou je elke seconde ofzo een waarde kunnen displayen hoelang ie al bezig is en/of de resterende tijd.
Zou de waarde op 0 springen dan is de eindtijd dus kleiner dan de starttijd. Je berekening moet daar wel even op letten.


groeten, Peter

 
 



Bericht 3 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:08-11-2005
 Aan:Stefan de Best (Sysop)MsgID:2581.3
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Stefan,
>> (max. bereik : 1.1 x 10^4932) .
Op naar wanneer die waarde op nul springt...
Dit bleek blijkbaar al na een aantal dagen (+/- 5) zo te zijn.  <<

Dan moet er iets anders mis zijn. Het genoemde getal is zo ontzettend groot, dat wij en ons zonnestelsel, en waarschijnlijk het ons bekende heelal allang verdwenen zijn voordat die waarde bij 1000 toename per seconde zijn maximum bereikt.

Michel Uphoff (Nlcomputer Forum)
Homepage


Bericht 4 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Stefan de Best (Sysop)Datum:08-11-2005
 Aan:PeterMsgID:2581.4
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Peter,
SdB >> Ik vraag me af; is het niet simpeler om gewoon
SdB >> softwarematig die teller op nul te zetten?

Peter>> Ik snap niet wat je bedoeld.
Met mijn hele verhaal bedoelde ik of het misschien niet makkelijker is dat Windows zelf die teller op nul zet, dan dat-ie mij opscheept met problemen. Met problemen (nou ja...probleempjes ) doel ik dus op het feit dat ik mijn computer een hardware-reset moest geven omdat het toetsenbord niet meer wilde reageren en die 'vergeten' configuratie-instelling opnieuw moest opgeven. Maar dat is een beetje omslachtig vind ik om die teller op nul te krijgen. Immers, een reset (soft- of hardwarematig) zet die teller ook weer op nul.
Ik heb overigens geen problemen verder. Ik wilde alleen mijn ervaring met jullie delen. Maar misschien las je mijn bericht met de gedachte dat ik een probleem zou hebben. ;-)
>
S
tefan

    Overzicht van 150 oude en minder bekende zwemslagen
    http://tinyurl.com/yuojv[/]



Bericht 5 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Stefan de Best (Sysop)Datum:08-11-2005
 Aan:Michel Uphoff (Sysop)MsgID:2581.5
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Michel,
>> Dan moet er iets anders mis zijn. Het genoemde getal is zo ontzettend groot, <<
Nou, ik denk dus dat Windows gewoon niet verder kan tellen dan 30/31 dagen (maar dan in microseconden) en er dan de brui aan geeft.
Aan Delphi kan het niet liggen want daar vind ik alleen een verwijzing naar kernel32.dll waarin GetTickCount blijkbaar is gedefinieerd (of gedeclareerd....ik weet het verschil nooit <g>).
Heb jij nog geen computer met XP gehad die een maand lang achter elkaar staat te draaien?
>>
Het genoemde getal is zo ontzettend groot, <<
Een Extended-type neemt 10 bytes in beslag, dus.... Ik moest wel in ene met Floatingpoint-instructies gaan werken. Maar daardoor heb ik wel een downloadsnelheid met 2 cijfers achter de komma voor in de ruil gekregen!  Zelfde verhaal met de hoeveelheid data die is gedownload. :-)

Stefan

    Overzicht van 150 oude en minder bekende zwemslagen
    http://tinyurl.com/yuojv[/]

 

Gewijzigd 8/11/2005 17:36 CET door Stefan de Best (Sysop)


Bericht 6 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:08-11-2005
 Aan:Stefan de Best (Sysop)MsgID:2581.6
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Stefan,

>> Ik wilde alleen mijn ervaring met jullie delen. <<

Dat is mooi. <g>
Als je computer gecrasht is, door jouw programma, dan zal dat nog wel vaker gebeuren. Het resetten van de 'teller' staat daar los van. Een link met '...die 'vergeten' configuratie-instelling...' zie ik dus ook niet met de 'teller', hooguit met wat je geprogrammeerd hebt. ;-)


groeten, Peter

>

Bericht 7 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:08-11-2005
 Aan:Stefan de Best (Sysop)MsgID:2581.7
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Stefan,
>> Heb jij nog geen computer met XP gehad die een maand lang achter elkaar staat te draaien? <<
Weet ik eigenlijk niet. Ik heb een aardig aantal "beheerstations" (pc's in een netwerk zonder toetsenbord/beeldscherm/muis, te bereiken via remote access), die dag in dag uit aan staan. Maar zo af en toe worden ze toch wel even herstart. Of ik over de 30 dagen heen ben gegaan, weet ik eigenlijk niet.
Bij Novell ligt dat anders, het maximum dat ik gezien heb was ruim 3,5 jaar <gg>
>> ik denk dus dat Windows gewoon niet verder kan tellen dan 30/31 dagen <<
Maar de zaak liep toch al na 5 dagen muurvast?

Michel Uphoff (Nlcomputer Forum)
Homepage


Bericht 8 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Stefan de Best (Sysop)Datum:08-11-2005
 Aan:PeterMsgID:2581.8
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Peter,
>> Als je computer gecrasht is, door jouw programma,
>> dan zal dat nog wel vaker gebeuren.

Weet je wat nou de gein is? Mijn programma draaide toen helemaal niet! Zie mijn bericht aan Michel. Ik denk dat de gebruikte variabelen in GetTickCount (in kernel32.dll --> dus Windows) te laag gedimensioneerd zijn...ofzoiets. Ja, tenzij je je computer eerder uitzet (< 30 dagen), dan heb je hier never nooit geen last van.
Ik normaal gesproken ook niet, maar let wel, het was een experiment hè. ;-)
Maar weet je wat, ik laat 'm nog een maand draaien. Kijken of het nog een keer gebeurd. Ik zit nu op dag 3.   8-|

>Stefan

    Overzicht van 150 oude en minder bekende zwemslagen
    http://tinyurl.com/yuojv[/]

 


Bericht 9 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:09-11-2005
 Aan:Stefan de Best (Sysop)MsgID:2581.9
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Stefan,

>>Maar weet je wat, ik laat 'm nog een maand draaien. Kijken of het nog een keer gebeurd.<<

De GetTickCount() declaratie in Visual Basic gaat uit van een long-integer en die gaat van –2.147.483.648 en 2.147.483.647.
effe rekenen:
1000ms * 86400 = 86400000 mseconden per dag
2147483647 is max. waarde, dus dat gedeeld door 86400000 = ongeveer 24,86 dagen
-2147483648 is min. waarde, dus ruwweg 24,86 * 2 = bijna 49,72 dagen.


Peter




Bericht 10 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Stefan de Best (Sysop)Datum:09-11-2005
 Aan:Michel Uphoff (Sysop)MsgID:2581.10
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Michel,
>> Maar de zaak liep toch al na 5 dagen muurvast? <<
Nee. +/- 5 dagen nadat ik van die integer ff gauw een extended had gemaakt (dat was bij dag 25). Maar weet je, eigenlijk staat dit er helemaal los van, want het programma draaide tijdens het vastlopen helemaal niet. Ik ontdekte tijdens het experiment toevallig een bug in mijn programma die ik tussendoor even verholpen heb.
Ik verdenk nu, na jouw berichtjes, die kernel32.dll ervan. Wat mij betreft kan deze discussie nu verplaatst worden naar "Windows".   Daar was het misschien sowieso beter op zijn plaats geweest. Ach, what the heck.
>>> Bij Novell ligt dat anders, het maximum dat ik gezien heb was ruim 3,5 jaar <gg>
Okééééé.

>Stefan

    Overzicht van 150 oude en minder bekende zwemslagen
    http://tinyurl.com/yuojv[/]

 


Bericht 11 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Stefan de Best (Sysop)Datum:09-11-2005
 Aan:PeterMsgID:2581.11
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Peter,
>> -2147483648 is min. waarde, dus ruwweg 24,86 * 2 = bijna 49,72 dagen. <<
Ja, dat klopt. Alleen, vergeet dan niet dat de teller van Windows bij nul begint en niet bij -2147483648. ;-)
Stefan


Bericht 12 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Tony de Jonge (Sysop)Datum:09-11-2005
 Aan:Stefan de Best (Sysop)MsgID:2581.12
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Stefan,
>> dat Windows gewoon niet verder kan tellen dan 30/31 dagen  <<
Die ervaring heb ik eerlijk gezegd niet, ik denk eerder dat er ergens een of ander memory leak zit. Zeker gezien het feit dat toen je de variabele meer ruimte gaf het probleem eerder onstond... Ook Windows machines kunnen zeer lang draaien zonder dat ze vastlopen, op kantoor is de server de laatste anderhalf jaar 2 x gereboot, en dat was beide keren vanwege een langdurige stroomstoring (langer dan een half uur, tsja, ze zijn aan de overkant van de straat aam het bouwen geweest) die onze UPS niet kon opvangen.
TdJ


Bericht 13 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Tony de Jonge (Sysop)Datum:10-11-2005
 Aan:Stefan de Best (Sysop)MsgID:2581.13
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Stefan,
>> Alleen, vergeet dan niet dat de teller van Windows bij nul begint en niet bij -2147483648 <<
Ik heb eerlijk gezegd nog nooit geprobeerd of er een negatief getal kan verschijnen, of dat het eigenlijk een unsiged value is (dus eigenlijk het dubbele). Verder telt het geheel gewoon ergens met nullen en enen en zal er naar ik denk wel gewoon een roll-over plaatsvinden, oftewel een stap van max naar 0, want als de kernelfunctie getTickCount niet tegen z'n maxvalue kon dan zouden alle Windows systemen na een vast aantal dagen vastlopen, dat was dan de afgelopen tien jaar best ontdekt (ok, ik geef toe dat Windows systemen wel een vastlopen, maar sinds NT/2000 is dat naar mijn ervaring vrijwel altijd een fout in een applicatie, helaas...)
TdJ


Bericht 14 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Stefan de Best (Sysop)Datum:10-11-2005
 Aan:Tony de Jonge (Sysop)MsgID:2581.14
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Tony,
Ik heb helaas geen computer beschikbaar met een verse (standaard) installatie van WinXP die ik een tijd ongemoeid kan laten lopen. Ik heb nog wel een Pentium-75 staan (75 Mhz dus ), maar daar draait XP niet op zeker?  8-)

>Stefan

    Overzicht van 150 oude en minder bekende zwemslagen
    http://tinyurl.com/yuojv[/]

 


Bericht 15 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Stefan de Best (Sysop)Datum:10-12-2005
 Aan:Tony de Jonge (Sysop)MsgID:2581.15
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Tony,
Ik ben nu ruim een maand verder dat de computer ononderbroken heeft aangestaan en hij draait nog steeds zonder problemen. Misschien dat het dan een hickup ofzo..
GetTickCount staat nu op 3000537734. Dat betekent ook dat het een 32-bits unsigned value is, toch? Ik laat 'm nog door draaien totdat de hoogste waarde van GetTickCount is bereikt. Ik wil namelijk nog steeds weten of die waarde weer op nul springt en of dat goed gaat. ;-)
>> ok, ik geef toe dat Windows systemen wel een vastlopen, maar sinds NT/2000 is dat naar mijn ervaring vrijwel altijd een fout in een applicatie, helaas...)<<
Ik werk nu alweer een tijdje met XP, maar ik moet zeggen dat dit besturingssysteem inderdaad erg stabiel is al gebied de eerlijkheid me om te zeggen dat ik wel een paar keer een BSD heb gehad waardoor ik de computer opnieuw moest starten.

Stefan

    Overzicht van 150 oude en minder bekende zwemslagen
    http://tinyurl.com/yuojv[/]

 

Gewijzigd 10/12/2005 12:31 CET door Stefan de Best (Sysop)


Bericht 16 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Tony de Jonge (Sysop)Datum:11-12-2005
 Aan:Stefan de Best (Sysop)MsgID:2581.16
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Stefan,
>> GetTickCount staat nu op 3000537734. Dat betekent ook dat het een 32-bits unsigned value is, toch? Ik laat 'm nog door draaien totdat de hoogste waarde van GetTickCount is bereikt. Ik wil namelijk nog steeds weten of die waarde weer op nul springt en of dat goed gaat. ;-) <<
Voor het getTickCount probleem staat op http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/gettickcount.asp beschreven wat er gaande is.
>> al gebied de eerlijkheid me om te zeggen dat ik wel een paar keer een BSD heb gehad waardoor ik de computer opnieuw moest starten. <<
Maar ik durf te wedden dat je dit met Win9x in diezelfde tijd met soortgelijke werkzaamheden vaker zou hebben gehad. Overigens hadden de meeste problemen die ik heb gezien met devicedrivers of slechte harddisk te maken (vooral het laatste heb ik helaas voor de eigenaar een paar keer gezien)
TdJ


Bericht 17 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Stefan de Best (Sysop)Datum:11-12-2005
 Aan:Tony de Jonge (Sysop)MsgID:2581.17
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Tony,
>> Maar ik durf te wedden dat je dit met Win9x in diezelfde tijd met soortgelijke werkzaamheden vaker zou hebben gehad. <<
Nou, ik ga niet zomaar een weddenschap aan, zeker als ik vantevoren weet dat ik die niet ga winnen. ;-)
Bedankt voor de link trouwens. Interessante site.

Stefan

    Overzicht van 150 oude en minder bekende zwemslagen
    http://tinyurl.com/yuojv[/]

 


Bericht 18 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:11-12-2005
 Aan:Stefan de Best (Sysop)MsgID:2581.18
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Stefan,
Bsod's in XP worden meestal veroorzaakt door driver/software problemen, soms door hardware problemen, en zeer zelden door fouten in XP.
Desalniettemin is het toch verstandig een XP bak af en toe te rebooten, al is het maar om het geheugen weer geheel vrij te geven. Ik heb regelmatig meegemaakt, dat een probleem op een xp computer dagen tevoren was veroorzaakt door een slecht stukkie code, meestal niet afsluiten van een onderdeel van een programma of bezet houden van delen van het geheugen.
De xp beheerstations op mijn werk (beheer op afstand via PcAw), worden iedere nacht om 3 uur auto herstart (mbv de taakplanner en shutdown.exe), juist om dit soort problemen te voorkomen.

Michel Uphoff (Nlcomputer Forum)
Homepage


Bericht 19 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Stefan de Best (Sysop)Datum:11-12-2005
 Aan:Michel Uphoff (Sysop)MsgID:2581.19
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Michel,
Ja. Normaal gesproken had ik de computer ook allang (handmatig) opnieuw gestart, maar vanwege de test draait-ie dus nog gewoon door.

Stefan

    Overzicht van 150 oude en minder bekende zwemslagen
    http://tinyurl.com/yuojv[/]

 


Bericht 20 van 20

NL Computer Forum ~ SQL & Programmeren
 Van:Stefan de Best (Sysop)Datum:25-12-2005
 Aan:Michel Uphoff (Sysop)MsgID:2581.20
 Onderwerp:GetTickCount (microseconden)Forum:ws-nlcomputer
Hoi Michel,
Test met succes afgerond (zie screenshot hieronder). Kan ik eindelijk de computer opnieuw starten de onderhoud plegen! ;-)
Hoewel het verstandig is om dat met enige regelmaat te doen (computer opnieuw starten), vraag ik me af hoe lang Windows 64-bit dan wel niet kan draaien voordat er een roll-over plaatsvind. Eens kijken....
bin 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111
hex FFFF FFFF FFFF FFFF
dec 18.446.744.073.709.551.615 ms
= 213.503.982.335 dagen
= een heleboel jaartjes >
Euh, ervan uitgaande dat ze de routine GetTickCount ook als 64-bit hebben uitgevoerd natuurlijk.

Stefan

    Overzicht van 150 oude en minder bekende zwemslagen
    http://tinyurl.com/yuojv[/]

 Prettige feestdagen en een voorspoedig en vooral gezond 2006
Bijlagen :

GetTickCount_Roll-over.jpg
7KB