Re: Fallbeispiel1, VB6 - VB.NET
- From: "W. Wolf" <w.wolf.nosp@xxxxxxxxxxxxx>
- Date: Sun, 14 Dec 2008 20:08:00 +0100
Hallo Harald,
"Harald M. Genauck" <hmg.ng.entfernen@xxxxxxxxxx> schrieb
Übrigens interessant, dass
Private Function concat2() As String
Dim i As Integer, r As Integer, c As Integer
Dim tr As String, tb As String
For i = 1 To 5
Pointer = 1
BufferLen = 0
Buffer = ""
Add "<html><body><table>"
For r = 1 To 1000
Add "<tr>"
For c = 1 To 10
Add "<td>"
Add CStr(r)
Add "-"
Add CStr(c)
Add "</td>"
Next
Add "</tr>"
Next
Add "</table></body></html>"
Next
tb = LeftB$(Buffer, Pointer - 1)
End Function
wiederum minimal langsamer ist (86msec bei concat1, 91msec bei concat2) -
theoretisch müsste ja die Auflösung der Verkettung "<td>" & r & "-" & c &
"</td>" auch noch etwas bringen. Vermutlich liegt es daran, dass die
Integerwerte r und c erst explizit in Strings umgewandelt werden müssen
weil sie nicht ByRef übergeben werden können. Ändert man den Add-Parameter
in ByVal wird das ganze natürlich wieder deutlich langsamer (120msec).
Das kann ich bestätigen, so weit war ich auch schon.
Habe heute Morgen den geposteten Code neu geschrieben
weil ich die Tests von damals nicht mehr habe und mir
von Peter nicht schon wieder "Grips-Sparmaßnamen"
vorwerfen lassen wollte.
Meine allerersten Messungen nach dem Vaubekien-
Artikel haben an dieser Stelle eine concat-Klasse
verwendet von denen einige im Netz zu finden sind.
Meine damaligen Messungen waren wohl deshalb
(wie gepostet) schlechter, konnten aber noch immer
sehr gut mit dem Stringbuilder mithalten. Damals war es
auch die erste .Net Variante, oder? Mag sein dass
die Stringbuilder-Klasse inzwischen noch zugelegt hat,
sonst könnte ich Peters Messungen nicht nachvollziehen.
Lässt man jedoch die Integer einfach mal außen vor, nimmt also nur die
Verkettung "<td>" & "-" & "</td>", dann wird concat1 rasant - 34msec. Die
Auflösung der Verkettung in drei Add-Aufrufe dagegen wird zwar auch
schneller, landet aber nur bei 64msec.
Die simple &-Verkettung ist also bei kurzen Elementen trotzdem immer noch
deutlich schneller, als der Mid-Trick.
Das ist mir schon länger bekannt. Peter könnte Deinen
Versuch auch in .Net testen, sollte sich das hier auch
bestätigen, dann war der Vergleich zumindest an dieser
Stelle für etwas gut ;-)
Gruß
W. Wolf
.
- Follow-Ups:
- Re: Fallbeispiel1, VB6 - VB.NET
- From: Peter Fleischer
- Re: Fallbeispiel1, VB6 - VB.NET
- References:
- Fallbeispiel1, VB6 - VB.NET
- From: Peter Fleischer
- Re: Fallbeispiel1, VB6 - VB.NET
- From: Aldi Apperman
- Re: Fallbeispiel1, VB6 - VB.NET
- From: Peter Fleischer
- Re: Fallbeispiel1, VB6 - VB.NET
- From: Aldi Apperman
- Re: Fallbeispiel1, VB6 - VB.NET
- From: W. Wolf
- Re: Fallbeispiel1, VB6 - VB.NET
- From: Peter Fleischer
- Re: Fallbeispiel1, VB6 - VB.NET
- From: W. Wolf
- Re: Fallbeispiel1, VB6 - VB.NET
- From: Harald M. Genauck
- Re: Fallbeispiel1, VB6 - VB.NET
- From: W. Wolf
- Re: Fallbeispiel1, VB6 - VB.NET
- From: Harald M. Genauck
- Fallbeispiel1, VB6 - VB.NET
- Prev by Date: Re: Fallbeispiel1, VB6 - VB.NET
- Next by Date: Re: Fallbeispiel1, VB6 - VB.NET
- Previous by thread: Re: Fallbeispiel1, VB6 - VB.NET
- Next by thread: Re: Fallbeispiel1, VB6 - VB.NET
- Index(es):
Relevant Pages
|