Avatar billede martin_moth Mester
13. februar 2003 - 21:20 Der er 10 kommentarer og
2 løsninger

Vis hvor lang tid udregning tager i messagebox

Hej - er 100% newbii i ASP.NET. Derfor et nemt spørgsmål

Jeg skriver min .aspx-side med VB.NET som sprog.

Jeg har en Function, der looper indtil en bestemt betingelse er opfyldt. Jeg kunne godt tænke mig at måle hvor mange millisekunder der går fra start af function til den returnerer, og skrive det i en messagebox.

Pseudo-kode:

Function MinFunction(MinParameter As Integer) As Boolean
  Dim i as Integer
  'Start tidstagning 
  For i = 1 to MinParameter
    'Udfør en masse beregninger
    If EnEllerAndenBetingelseErOpfyldt Then
      'Udskriv beregningstid i messagebox
      Return True
    End if
    'Udskriv beregningstid i messagebox
    Return=False
  Next i
End Function

Mit spørgsmål er altså:

1) Hvordan får jeg målt tiden i ovenstående (kan vel bruge Now() til et eller andet?

2) Hvordan får jeg skrevet det i en Messagebox?
Avatar billede burningice Nybegynder
13. februar 2003 - 22:55 #1
1) du kan bruge DateTime.Now og TimeSpan til at beregne hvor lang tid to givne tidspunkter strækker sig over

Eks.

DateTime tid1 = DateTime.Now();

for (int i = 0; i < 10000; i++) {
 
}

DateTime tid2 = DateTime.Now();
TimeSpan tidgået = tid2 - tid1;

string tid = tidgået.MilliSeconds.ToString();

2) For at få smidt en MsgBox på skærmen skal du bruge Clientside-scripting... f.eks JS: <script language="JavaScript">alert("hej med dig");</script>

Til sidst skal jeg lige sige at mine kodeeksempler er uden garanti for at de virker, da det er skrevet løst ud nogen reference ved hånden, men forhåbenligt kan du se princippet i det.
Avatar billede martin_moth Mester
13. februar 2003 - 23:05 #2
Nu bruger jeg VB.NET som programmeringssprog...

Mht. 1, så var det den løsning jeg selv havde tænkt - men bliver forskellen mellem tid2 og tid1 ikke målt i sekunder, ikke millisekunder

Mht. 2, Så skal jeg have den tilsvarende kode i VB.NET...

Jeg er udemærket klar over principperne, dem har jeg selv "udtænkt", problemet er hvordan syntaksen helt præcist ser ud, når jeg ikke har andet end en text-editor til at hjælpe mig, og ikke Visual Studio's fine hjælpefunktioner :o(
Avatar billede burningice Nybegynder
13. februar 2003 - 23:39 #3
martin_moth>> du har da SDK'et, og tusindvis af sider på MSDN og Google ;)

et lille opslag på TimeSpan viser at den kan returnerer en tid helt ned i millisekunder, sååeh... ;)

I Vb.net ville koden se nogenlunde sådan her ud


Dim tid1 As DateTime = DateTime.Now()
Dim i As Integer

For i = 0 To 10000

Next

Dim tid2 As DateTime = DateTime.Now()
Dim tidgået As TimeSpan = tid2 - tid1

Dim tid As String = TimeSpan.Milliseconds.ToString()

ang. 2'eren, så er der ikke nogen tilsvarende kode i vb.net... læs dog hvad jeg skriver !!! "
For at få smidt en MsgBox på skærmen skal du bruge Clientside-scripting"... vb.net er IKKE client-side scripting, og i forbindelse med asp.net er det KUN noget der kører på SERVEREN... ergo er den kode jeg har skrevet den rigtige

Du behøver altså heller ikke VS's fine hjælpefunktioner... Webmatrix er udemærket til asp.net og er helt gratis, og indeholder mange af de samme ting som "storebroderen" vs gør.
Avatar billede martin_moth Mester
13. februar 2003 - 23:53 #4
Jeg bruger skam også webmatrix - jeg har nok bare ikke luret at få den til at vise det jeg vil have... Og at søge på msdn osv. tager laaang tid, især man ikke er helt 100 på hvad man skal søge efter.

"ang. 2'eren, så er der ikke nogen tilsvarende kode i vb.net... læs dog hvad jeg skriver !!!"

So sorry! Du skrev at jeg skal bruge client side scripting, og det udelukker jo VB.NET - men jeg vidste ikke at man ikke kunne kalde en msgbox eller tilsvarende fra serverside. I øvrigt ville jeg så nok foretrække VBScript i mit clientside-script, for ligesom at "blive i stilen" ;o)

Smid et svar, og du får points :o)

PS: jeg kan kalde Now direkte i asp.net, behøver ikke DateTime.Now() :o)
Avatar billede martin_moth Mester
14. februar 2003 - 00:53 #5
Øhh - altså lige bortset fra, at den ikke vil æde tid2 - tid1, da man ikke kan bruge " - " på datoer. Der må være en datedifference() eller noget i den stil...
Avatar billede midas_dk Nybegynder
14. februar 2003 - 14:20 #6
martin_moth >> Hvor kommer " dog fra? Har du gang i at trække DATOER fra hinanden?
Avatar billede midas_dk Nybegynder
14. februar 2003 - 14:24 #7
Dim StartTime As Date = Now

...

Dim RunLength As System.TimeSpan = Now.Subtract(StartTime )
Dim Millisecs As Integer = RunLength.Milliseconds

Response.Write("<script>alert('" & Millisecs.ToString() & "');</script>")
Avatar billede martin_moth Mester
14. februar 2003 - 14:38 #8
Ja, det havde jeg (tænkt mig at trække datoer fra hinanden). Det foreslår cyberfessor i øvrigt også i sit svar, og for mig virker der meget logisk - og det kan du i masser af andre programmer :o)

Men det du skriver lyder til at være helt rigtigt, skal lige hjem og tjekke (har ikke en webserver der kan æde asp.net lige i nærheden - og skal direkte videre ud i nattelivet, så det bliver først i weekenden)
Avatar billede midas_dk Nybegynder
14. februar 2003 - 15:44 #9
martin >> Hehe... Hov, det var mig, der fik formuleret mig dårligt :-/
Og så misforstod jeg også din kommentar omkring " - "... Men jeg bruger selv den kode, jeg har skrevet, så den burde virker :-)

Go' fornøjelse!
Avatar billede burningice Nybegynder
14. februar 2003 - 19:14 #10
martin_moth>> jeg ville nok ikke bruge vbscript, da det tvinger dine besøgende til at bruge IE...

Ang. DateTime.Now og Now har det ikke noget med asp.net at gøre, men VB.net og C#... jeg koder altid selv i C#, og kender kun de helt overordnede forskelle mellem de to sprog, så at man bare kan skrive Now i vb.net var jeg ikke lige klar over :)

i C# kan man også trække en tid fra hinanden hvis de er af typen DateTime, så det kan også være en lille forskel der mellem vb.net og c#.

Men hvis du har fået det til at virke med den kode midas kom med er det jo super :) han har sikkert lidt mere erfaring indenfor vb.net end jeg har ;)
Avatar billede burningice Nybegynder
14. februar 2003 - 19:14 #11
:)
Avatar billede martin_moth Mester
15. februar 2003 - 13:32 #12
I får begge points for hjælpen og for de kloge ord jeg fik med på vejen :o)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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