Mid () vs Mid $ ()

7

Laut der Dokumentation in VB6 gibt die Funktion Mid () eine Variante zurück, aber Mid $ () gibt eine Zeichenkette zurück, und das ist offensichtlich effizienter.

Meine Fragen sind:

  1. Welchen einfachen Test kann ich verwenden, um den Leistungsunterschied zu erkennen? Ich habe versucht, eine einfache App zu überwachen, die einige Zeichenfolgenoperationen mit Perfmon , aber es gab keine erkennbarer Unterschied.

  2. Lohnt es sich, sich Sorgen zu machen? Ich habe mich angewöhnt, die $ -ized-Funktionen zu verwenden, aber sollte ich jedem in meinem Team empfehlen, es auch zu benutzen?

jakdep 06.02.2009, 08:46
quelle

3 Antworten

17

Es lohnt sich nicht, sich Sorgen zu machen. Es ist ein Rest von Microsoft Basic von vor 15-20 Jahren, als ein schneller Prozessor um Größenordnungen langsamer war als alles andere heute.

Es hat eine gewisse ästhetische Anziehungskraft, Mid $ zu verwenden, anstatt VB zu bestimmen, was Ihre Datentypen sind. Und wenn Sie irgendwelche Schleifen haben, die es ausführen, sagen wir, Tausende von Tiems pro Sekunde, dann könnte Ihr Neugierfaktor zunehmen. Ansonsten, neh.

Hier ist ein Link zu jemandem, der den Unterschied gemessen hat. Mid $ war etwa 2,5 mal so schnell wie Mid. Einschließlich Tests, die auf VB4 zurückgehen.

    
dkretz 06.02.2009, 08:49
quelle
4

Während die Leistung zwischen ihnen vernachlässigbar ist, ist es nicht wirklich ein Unterscheidungsmerkmal, was man ohnehin verwenden sollte.

Bei der Verwendung einer Variante kann es einige Nuancen geben, wenn ein starker Typ benötigt wird. Was passiert zum Beispiel, wenn Sie eine Variante an einen Parameter übergeben, der eine ByRef-Zeichenfolge erwartet? Nichts Schlimmes, aber etwas mehr als nur eine Adresse passiert.

Wenn Sie also wissen, dass Sie mit Strings arbeiten wollen, dann gehen Sie voran und verwenden Sie die $ Versionen dieser Funktionen. Das Verhalten von ihnen und ihre Verwendung in anderen Ausdrücken ist einfacher und besser zu verstehen. Wenn Sie wissen, dass Sie eine Variante benötigen und Ihre Eingaben Varianten sind, verwenden Sie sicher die Nicht $ Versionen.

    
AnthonyWJones 06.02.2009 08:59
quelle
3

Ehrlich gesagt, ich denke, es ist vernachlässigbar.

Vielleicht kannst du so etwas versuchen. Laden Sie das "High-Performance Timer Object" von Ссылка herunter, führen Sie eine lange Schleife (ca. 1.000.000 Iterationen) von String-Operationen durch, und messen Sie die Laufzeitdifferenz. Mit "Operationen" meine ich: Verkettung von Variant s im Gegensatz zur Verkettung von String s. Mid() und Mid$() werden sehr wahrscheinlich das gleiche ausführen. OTOH - du kannst das auch testen.

Wenn Sie das täten, wäre ich interessiert, wenn Sie die Ergebnisse gepostet hätten.

    
Tomalak 06.02.2009 08:53
quelle

Tags und Links