Avatar billede submann Nybegynder
23. august 2005 - 13:57 Der er 20 kommentarer og
1 løsning

Hvordan laver man Genereringstid

Hvordan laver man Genereringstid ?

Med venlig hilsen
Submann
Avatar billede softspot Forsker
23. august 2005 - 14:05 #1
Starter tide i starten af request og stopper den i slutningen. differencen er sluttid-starttid (findes f.eks. vha. DateDiff).
Avatar billede submann Nybegynder
23. august 2005 - 14:14 #2
Sådan ?

<%
datStartTime = Now()

' Hele siden

Response.Write "Genereringstid: " & DateDiff("s", datStartTime, Now()) & " sek."
%>

Hvis det er sådan, hvordan får jeg så flere tal ?
Lige nu siger den bare 0 sek
Avatar billede Spotgun Seniormester
23. august 2005 - 14:14 #3
Jeg mener kun at DateDiff kan gå ned og vise sekunder, så skal det være mere præcist (f.eks. i MS), så skal du nok have fat i en komponent til at klare det.

AspTime er gratis, så hvis du har mulighed for selv at installere komponenter på din server, så brug den. Den kan hentes her: http://www.15seconds.com/component/pg000210.htm

Der medfølger eksempler i zip-filen du kan downloade...
Avatar billede submann Nybegynder
23. august 2005 - 14:16 #4
Jeg har desværre ikke mulighed for selv at installerer noget...
Avatar billede Spotgun Seniormester
23. august 2005 - 14:20 #5
Så tror jeg ikke det kan blive mere præcist end 0 sekunder desværre. :(
Avatar billede softspot Forsker
23. august 2005 - 14:23 #6
Jeg er faktisk ikke klar over om JScript kan tage tid mere detaljeret end VBScript... men det var måske et sted at starte...
Avatar billede submann Nybegynder
23. august 2005 - 14:25 #7
Jeg prøver lige at lade være åbent lidt endnu, det kunne jo være der var en der vidste om JScript kan bruges...
Avatar billede softspot Forsker
23. august 2005 - 14:27 #8
Meeen det ser lovende ud :)

Date-objektet har en funktion der hedder getMilliseconds(), så mon ikke det kan klares ved at skifte til JScript (i det mindste der hvor tiden skal startes og sluttes, samt udmåles)...?

Noget i stil med

<script language="JScript" runat="server">
var start = new Date();
</script>
<script language="VBScript" runat="server">
' din normale kode
</script>
<script language="JScript" runat="server">
var slut = new Date();
Response.Write((slut-start).getMilliseconds());
</script>
Avatar billede submann Nybegynder
23. august 2005 - 14:33 #9
Nu ved jeg overhovedet slet ikke noget om JScript... ;o)

Der kommer denne fejl:
Fejltype:
Der opstod en Microsoft JScript-kørselsfejl (0x800A01B6)
Objektet understøtter ikke denne egenskab eller metode
/test1.asp, line 9

Linje 9 er denne:
Response.Write((slut-start).getMilliseconds());
Avatar billede softspot Forsker
23. august 2005 - 14:37 #10
Det er fordi udtrykket (slut-start) ikke resulterer i en Date... :/

Skal lige se om jeg kan finde en tilsvarende funtkion i JScript som DateDiff i VBScript...
Avatar billede submann Nybegynder
23. august 2005 - 14:42 #11
Det lyder dejligt...

Bliver lige nød til at smutte, kommer igen i aften...
Avatar billede softspot Forsker
23. august 2005 - 14:50 #12
Hmm... mon ikke dette burde fungere i øvrigt:

Response.Write(slut.getMilliseconds() - start.getMilliseconds());
Avatar billede submann Nybegynder
23. august 2005 - 14:54 #13
Det giver et resultat på 0

Så det er det samme som DatDiff
Avatar billede softspot Forsker
23. august 2005 - 15:07 #14
Hmmm... så kan man åbenbart ikke få det mere detaljeret end sekunder med serverside-scripting... spøjst - så giver det jo ingen mening med en funktion ved det navn...(?)

Er din server ekstrem hurtig? Har du prøvet at lave et loop som gør noget tidskrævende for at se om der kommer noget udslag overhovedet?
Avatar billede crapman Nybegynder
23. august 2005 - 15:16 #15
Denne her fungerer perfekt :)


#code-start#
startTime = timer
[ASP kode...]
response.write "Time it took=" & timer-startTime
#code-end#
Avatar billede Spotgun Seniormester
23. august 2005 - 15:18 #16
Jeg prøvede lige at lave en test med det DateDiff eksemplet i vbscript, og den registrerer fint at den brugte 27 sekunder (27.208 faktisk, timet vha. AspTime) på at skrive 50.000 tal ud en for en.
Avatar billede Spotgun Seniormester
23. august 2005 - 15:21 #17
Crapmans eksempel virker jo fint. Hmm... og den har jeg overset de sidste par år? Heh...
Avatar billede submann Nybegynder
23. august 2005 - 22:51 #18
Jeg har afprøvet den sådan her:
<script language="JScript" runat="server">
var start = new Date();
</script>
<script language="VBScript" runat="server">
For i = 1 to 5000000
  Response.Write I & " "
Next
</script>
<script language="JScript" runat="server">
var slut = new Date();
Response.Write(slut.getMilliseconds() - start.getMilliseconds());
</script>

Den kommer med dette resultat: 0 sek

Så har jeg prøvet denne:
<%
startTime = timer

For i = 1 to 5000000
  Response.Write I & " "
Next

Response.Write "Genereringstid: " & timer-startTime
%>

Den kommer med dette resultat: 15,625 sek

Er der et sted jeg kan lære mere om Timer ?

Så jeg takker...

Dem der vil have point bedes ligge et svar...
Avatar billede softspot Forsker
23. august 2005 - 22:57 #19
Som spotgun siger, så er det en funktion jeg har overset i 10 år nu. Jeg har altid irriteret mig over at VB og VBScript ikke kunne tage tider i lavere opløsning end sekunder. MSDN beskriver så fint hvordan det gøres (ligner til en forveksling det crapman skriver - ingen beskyldning ment med det :)):

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctTimer.asp?frame=true
Avatar billede crapman Nybegynder
24. august 2005 - 00:18 #20
hehe er ligeglad med points, men er glad for at du kunne bruge den... :)
Avatar billede crapman Nybegynder
24. august 2005 - 00:19 #21
og ja softspot... det er en dejlig funkiton.. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester