Ich habe versucht, eine sehr schnelle Möglichkeit zu finden, JJJJ-MM-TT [hh: mm: ss] in ein Date-Objekt zu analysieren. Hier sind die 3 Möglichkeiten, die ich versucht habe, und die Zeiten, die jede Methode benötigt, um 50.000 Datum-Zeit-Strings zu parsen.Actionscript 3 - Schnellste Methode zum Analysieren von JJJJ-MM-TT hh: mm: ss zu einem Date-Objekt?
Kennt jemand schnellere Vorgehensweisen oder Tipps, um die Methoden zu beschleunigen?
castMethod1 takes 3673 ms
castMethod2 takes 3812 ms
castMethod3 takes 3931 ms
Code:
private function castMethod1(dateString:String):Date {
if (dateString == null) {
return null;
}
var year:int = int(dateString.substr(0,4));
var month:int = int(dateString.substr(5,2))-1;
var day:int = int(dateString.substr(8,2));
if (year == 0 && month == 0 && day == 0) {
return null;
}
if (dateString.length == 10) {
return new Date(year, month, day);
}
var hour:int = int(dateString.substr(11,2));
var minute:int = int(dateString.substr(14,2));
var second:int = int(dateString.substr(17,2));
return new Date(year, month, day, hour, minute, second);
}
-
private function castMethod2(dateString:String):Date {
if (dateString == null) {
return null;
}
if (dateString.indexOf("0000-00-00") != -1) {
return null;
}
dateString = dateString.split("-").join("/");
return new Date(Date.parse(dateString));
}
-
private function castMethod3(dateString:String):Date {
if (dateString == null) {
return null;
}
var mainParts:Array = dateString.split(" ");
var dateParts:Array = mainParts[0].split("-");
if (Number(dateParts[0])+Number(dateParts[1])+Number(dateParts[2]) == 0) {
return null;
}
return new Date(Date.parse(dateParts.join("/")+(mainParts[1]?" "+mainParts[1]:" ")));
}
Nein, Date.parse nicht behandeln Bindestriche standardmäßig. Und ich muss null für Datum Zeit Zeichenfolgen wie "0000-00-00"
zurückgeben.
Bitte sagen Sie uns, wie lange 50K Iterationen für die 3 Beispielfunktionen benötigt haben, damit wir Ihre "weniger als eine Sekunde" relativieren können. – bzlm
Ich frage mich, ob es eine zusätzliche Leistung geben wird, wenn Sie var Übereinstimmungen und d durch const Schlüsselwort ersetzen. – UnknownJoe