He estado tratando de encontrar una forma muy rápida de analizar aaaa-mm-dd [hh: mm: ss] en un objeto Date. Estas son las 3 formas en que he intentado hacerlo y las veces que le toma a cada método analizar 50,000 cadenas de tiempo.Actionscript 3 - Forma más rápida de analizar aaaa-mm-dd hh: mm: ss a un objeto Date?
¿Alguien sabe alguna forma más rápida de hacerlo o consejos para acelerar los métodos?
castMethod1 takes 3673 ms
castMethod2 takes 3812 ms
castMethod3 takes 3931 ms
Código:
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]:" ")));
}
No, Date.parse no manejará guiones por defecto. Y necesito devolver nulo para cadenas de fecha y hora como "0000-00-00"
.
Por favor, díganos cuánto tiempo tomaron las iteraciones de 50K para las 3 funciones de ejemplo, por lo que podemos poner su "menos de un segundo" en perspectiva. – bzlm
Me pregunto si habrá algún rendimiento adicional si reemplazas var matches yd con const keyword. – UnknownJoe