Ich habe immer Angst, Dinge nur als Varianten zu deklarieren, unter der Annahme, dass unnötig viel Speicher zugewiesen wird."Dim myarray() als String" VS "Dim myarray() als Variante"
Kürzlich zur Verbesserung der Leistung eines Tabellenkalkulationsarbeits aber ich den gegenteiligen Eindruck bekam (siehe bearbeiten unten): Dim myarray() as Variant
war die Verbesserung der Leistung im Vergleich zu Dim myarray() as String
Was wäre die wichtigsten Unterschiede und Folgen der beiden Erklärungen sein?
konnte nicht klare Anleitung finden Sie hier: https://msdn.microsoft.com/en-us/library/aa711948.aspx
EDIT: Kontrollierte Leistung Test
Ich lief eine kontrollierte Performance-Test (nehmen Sie die dim myarray() as Variant
Version, eine Kopie erstellen und zwei Variablen Dim myarray() as String
ändern)
Wie Sie unten sehen können, habe ich mich geirrt, der Leistungsunterschied ist NICHT signifikant.
Dim myarray() as Variant VERSION
Start 4:05:47 PM
FXLoaded 4:05:47 PM 00:00 TDLoaded 4:06:38 PM 00:51 LisofPCTD 4:06:57 PM 00:19 YDLoaded 4:07:47 PM 00:50 LisofPCYD 4:08:14 PM 00:27 PrintCoBTD 4:08:46 PM 00:32 PrintCoBYD 4:09:18 PM 00:32 Total 03:31 03:31
Dim myarray() as String VERSION
Start 4:25:53 PM
FXLoaded 4:25:53 PM 00:00 TDLoaded 4:26:53 PM 01:00 LisofPCTD 4:27:10 PM 00:17 YDLoaded 4:28:07 PM 00:57 LisofPCYD 4:28:32 PM 00:25 PrintCoBTD 4:29:03 PM 00:31 PrintCoBYD 4:29:34 PM 00:31 Total 03:41 03:41
Das einzige, was Sie geändert haben, war 'Variant' für' String' auszuschalten? Haben Sie den Code überprüft, um Ihre Hypothese zu bestätigen, dass die Geschwindigkeit verbessert wurde? – Chrismas007
Der von Ihnen angegebene Link ist VB.Net, der nicht direkt relevant ist. Ich bevorzuge die Verwendung von Varianten für Arrays aufgrund ihrer Flexibilität, vor allem mit der Syntax "Dim myarray As Variant" (eine Variante, die ein Array anstelle eines Arrays von Varianten enthalten kann. Ich habe solche Dinge mit bis zu 100.000 Einträgen verwendet) (oder mehr) ohne Problem, aber YMMV –
@JohnColeman Ich habe noch keine Quelle dazu, aber ich denke, Sie sprechen mit der Antwort genau dort. Arrays sind der einzige Typ, den ich gesehen habe vorgeschlagen, sollte die 'Variante verwenden 'type: Wenn Sie einen' String'-Typ verwenden, müssen Sie sich alle zusätzlichen Zeichen vorstellen, die zum Definieren der Zeichenfolge als Array benötigt werden. – Chrismas007