---
title: "Timer, opålitligt ?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/65981-timer-opålitligt"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Macce"
published: "2003-01-24T08:23:22.000Z"
updated: "2003-01-24T12:31:01.000Z"
replies: 20
views: 406
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/65981-timer-opålitligt"
---

# Timer, opålitligt ?

_Sida 1 av 2._

## #1 — Macce, 2003-01-24T08:23Z

Hej !

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 ?

Mvh

Permalänk: https://www.webforum.nu/p/65981

## #2 — niko, 2003-01-24T10:15Z

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.

Permalänk: https://www.webforum.nu/p/926112

## #3 — Macce, 2003-01-24T10:22Z

> 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.

eller ?

Mvh

Permalänk: https://www.webforum.nu/p/926116

## #4 — Engine^, 2003-01-24T10:38Z

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.
```

Något i den stilen?

Permalänk: https://www.webforum.nu/p/926126

## #5 — niko, 2003-01-24T10:39Z

> 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.

Ja. Som sagt, ju kortare script du kör, desto större andel av tiden kommer att bero på slumpeffekter av vad Windows har för sig i övrigt.

Sen är det ju så att Timer() bara har sju siffrors precision. Pga detta och avrundningsfel så kan du alltså mycket väl få 0 för kortare script.

Källa: <http://www.devguru.com/Technologies/vbscript/quickref/timer.html>

Permalänk: https://www.webforum.nu/p/926127

## #6 — Macce, 2003-01-24T10:44Z

Engine^\> Hur kör man din kod i VbScript ?

Permalänk: https://www.webforum.nu/p/926131

## #7 — Engine^, 2003-01-24T10:50Z

Du sätter deklarationen så att den är global. Det borde räcka...

Permalänk: https://www.webforum.nu/p/926138

## #8 — Macce, 2003-01-24T10:53Z

Kan du ge mig ett exempel som du provkört i VbScript ?

Permalänk: https://www.webforum.nu/p/926139

## #9 — Engine^, 2003-01-24T10:54Z

Opps... undrar om jag har råkat tänka VB nu och inte VBS... ber om ursäkt isånnafall.

Permalänk: https://www.webforum.nu/p/926140

## #10 — Macce, 2003-01-24T11:12Z

Oki :)

Permalänk: https://www.webforum.nu/p/926143

## #11 — niko, 2003-01-24T11:13Z

> Engine^\> Hur kör man din kod i VbScript ?

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  ).

Permalänk: https://www.webforum.nu/p/926144

## #12 — Macce, 2003-01-24T11:17Z

hmm, ingen som vill glänsa lite och fixa till en liten COM-komponent ?  :e 

mvh

Permalänk: https://www.webforum.nu/p/926145

## #13 — OveRRidE, 2003-01-24T11:52Z

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. :)

Permalänk: https://www.webforum.nu/p/926177

## #14 — Macce, 2003-01-24T11:55Z

Får köra den utan någon kod mellan start och stopp, och sen räkna bort den tiden. hehe §e

Permalänk: https://www.webforum.nu/p/926183

## #15 — Engine^, 2003-01-24T11:57Z

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

Permalänk: https://www.webforum.nu/p/926184

## #16 — Macce, 2003-01-24T12:01Z

Jag kräver inte en noggrannhet på 100nS bara ett mer
rättvisande värde än +- 20ms  :stud

mvh

Permalänk: https://www.webforum.nu/p/926186

## #17 — Vide, 2003-01-24T12:03Z

> **Macce skrev:**
>
> hmm, ingen som vill glänsa lite och fixa till en liten COM-komponent ?  :e

Mjo, jag lekte ihop en liten en... ;)
<http://member.webforum.nu/14/webeye.dll>

```
Set oTimer = server.CreateObject( "webeye.TimerClass" )
oTimer.StartTimer

'Kör din kod

oTimer.StopTimer
Response.Write "Tid: " & oTimer.GetTimer() & " ms"
```

Mvh, Vide

Permalänk: https://www.webforum.nu/p/926187

## #18 — Macce, 2003-01-24T12:13Z

Vide\>  Stark kandidat till årets medlem  :birp 

Får nu 10ms i 19 fall av 20...

Verkar fungera bättre än timer i a f....

Tusen tack !!!

Permalänk: https://www.webforum.nu/p/926194

## #19 — niko, 2003-01-24T12:19Z

> **OveRRidE skrev:**
>
> 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? ;)

Permalänk: https://www.webforum.nu/p/926199

## #20 — Engine^, 2003-01-24T12:20Z

Vide: Vilken funktion använde du dig av för att få tiden?

Permalänk: https://www.webforum.nu/p/926200

---

Tråden på webben: https://www.webforum.nu/amne/asp/65981-timer-opålitligt  
Nästa sida: https://www.webforum.nu/amne/asp/65981-timer-opålitligt/page2.md
