Array oder String+Stringsplit schneller?

  • Hi,


    wenn du viel Wert auf Performance legst würde ich die ganz normale Array-Variante vorziehen.
    _ArrayAdd(...) braucht (wahrscheinlich) aufgrund des ständigen ReDims extrem lange, StringSplit(...) muss den Datensatz zum Schluss nochmals abarbeiten, deshalb ist auch diese Variante (etwas) langsamer als die Array Version.
    Hier mal ein Testskript, _E3() ist wie schon geschrieben am schnellsten:


    • Offizieller Beitrag

    Da die Arraygröße erst am Schluss bekannt ist, ist stringsplit wohl die beste Lösung.


    Nicht unbedingt. Du kannst doch sicher abschätzen, ob es 100.000 oder 1.000.000 Einträge werden. Erstelle ein Array am Beginn, das auf jeden Fall größer ist als die zu erwartende Anzahl an Einträgen. Den Zähler für die Anzahl Elemente erhöhst du bei jedem neuen Element und verwendest ihn dann als Index für den Eintrag im Array (Achtung: Index beginnt bei 0). Nach dem letzten Element-Eintrag schneidest du mit ReDim die überzähligen Arrayelemente ab. Du kannst auch den Zähler an Position [0] im Array führen, wenn die Anzahl der Elemente im weiteren von Bedeutung ist (erspart dir ein UBound ;)).

  • In diesem Fall wird man aber wahrscheinlich gerade langsamer sein, da ja jedesmal noch $Array[0] inkrementiert wird:


    Mal abgesehen davon das nicht nur die "Schnelligkeit" ein optimales Programm ausmacht sondern auch der Speicherverbrauch.
    Und einfach so ein Array mit Mondgröße zu initialisieren spricht dem ziemlich entgegen.


    FKFK:
    Stringsplit fetzt - nimm es.