Mäter mina skript med Timer(), tycker att det ger någorlunda
fingervisning om hur lång tid saker och ting tar.
Men hur pålitligt blir detta när jag har en sida utan db connection
men med en del stränghantering, vid tidmätning där får jag
oftast dessa tre olika tider 11.71875ms, 0ms och 7.8125ms
Tycker att det är lite märkligt att det kan variera så mycket
speciellt att det kan bli 0ms ???
Finns det någon gratiskomponent som är "vassare" än timer ?
Först och främst ska man ha klart för sig att Timer() inte mäter exekveringstiden för ditt script, utan exekveringstiden för samtliga 350(?) trådar och processer i Windows från att ditt script börjar tills det slutar.
Om man har korta script så kan man alltså få kraftiga variationer beroende på vad Windows råkar ha för sig just då.
Finns det någon gratiskomponent som är "vassare" än timer ?
Det finns timers i Windows som är mer exakta än Timer() fast det kommer inte att lösa problemet med variationerna. Vad du skulle behöva är en komponent som bara mäter tiden som ditt script använder. Det vet jag inte om det finns någon .. (Kanske ett projekt för någon?)
Annars kan du ju alltid upprepa koden i dina script X antal gånger för att få längre tider och vettigare värden att jämföra.
Annars kan du ju alltid upprepa koden i dina script X antal gånger för att få längre tider och vettigare värden att jämföra.
Det gör jag ibland, men om jag vill mäta ett speciellt script kan jag
använda Microsoft Web Application Stress Tool, fast jag har inte satt mig in i det programmet.
Tycker att Timer() annars är ganska smidigt att includera (svängelska) på sidorna.
Eftersom att jag får svaret 0ms ibland så borde väl mitt skript gå
så fort att det inte går att mäta, och de andra tiderna beror på
mitt system.
Jag är inte helt hundra på att det är följande du är på jakt efter men
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
dim lngStart As Long, lngTid As Long
lngStart = timeGetTime
kördittskriptfortsomfanken()
lngTid = timeGetTime - lngStart ' lngTid = tiden det tog i millisekunder.
Det gör man inte. Man får kapsla in den i en COM-komponent. Och om nån nu skulle ha lust att göra det så kan de också passa på att slänga in:
Public Declare Function GetThreadTimes Lib "kernel32" ..
Den returnerar exekveringstiden enbart för den egna tråden (bortser från övriga Windows), vilket kunde vara intressant som jämförelse. Den har dessutom grym precision (mäter i 100-nano-sekundsintervaller :o ).
Summa summarum: det går inte att veta tiden en specifik komponent förbrukar i en Micro$oft-miljö, eftersom Bill Gates alltid tar en viss procent av det skapande eller skapade. :OO
Fast frågan är ju hur pass rättvisande det blir om man kör det i en komponent, då den troligtvis snor lite tid som även det påverkar resultatet.
Jag skulle nog påstå att ett par API-anrop och en subraktion är väldigt försumbara i sammanhang där vi mäter exekveringstid hos VBScript. Tiden för att initialisera komponenten kommer ju så klart inte att ingå i differensen.
Vide>> Fuskis. Du använder bara timeGetTime, eller hur? ;)