Ich mache derzeit ein Projekt, das große Datenmengen zu verwaltbaren Zahlen von Datenpunkten, die in Diagrammen geplottet werden können, umfasst.Excel VBA vs Javascript-Leistung zum Iterieren von großen Datensätzen
Ich schrieb den folgenden Code in Javascript, der durch einen Bereich von Daten iteriert und den ersten Wert bei einer gegebenen Schrittgröße auswählt, in diesem Fall Startwert = 0 und Schrittgröße = 0,1. Das funktioniert großartig und führt sehr schnell aus; Ich habe es nicht quantifiziert, aber definitiv < 1 Sekunde für> 10000 Datenpunkte.
var data = [ ... ];
var filteredData = [];
var index = 0;
var step = 0.1;
for (var i=0; i < data.length; i++) {
if(data[i] >= index) {
filteredData.push(data[i]);
index+=step;
}
}
Codepen of Javascript with Mini Sample Dataset
jedoch alle unsere Daten kommt als in Excel Arbeitsbücher, so neu geschrieben ich den Code als Excel-Makro VBA wie folgt, um die Datenpunkte zu einem benachbarten Spalte ausgibt. Um die gleiche Anzahl von Datenpunkten zu verarbeiten, dauert es eine LANGE Zeit im Vergleich zum JS-Äquivalent, etwas in der Größenordnung von 20 Sekunden für 10000 Datenpunkte.
Dim dataRange As Range
Set dataRange = Range(Range("A8"), Range("A8").End(xlDown))
Dim index As Double
Dim stepsize As Double
Dim outputRow As Integer
index = 0
step = 0.1
outputRow = 8
For Each cell In dataRange
If cell.Value >= index Then
ActiveSheet.Cells(outputRow, 2).Value = cell.Value
index = index + stepsize
outputRow = outputRow + 1
End If
Next cell
Warum gibt es so große Unterschiede zwischen den beiden Methoden? Gibt es irgendetwas, das an meinem VB-Code grandios ineffizient ist? Ich hoffe, diese Frage ist nicht zu vage!
Vielen Dank, Adam