2012-08-07 7 views
5

En JavaScript, podemos obtener un número que representa la fecha/hora actual, así:¿Por qué Google no optimiza la fecha/hora de la construcción en su primera plana Javascript

var dt = new Date(); 
var e = dt.getTime(); 

Un poco más corto forma parte de hacer esto podría ser:

var f = (new Date()).getTime(); 

la forma más compacta de hacer esto se refleja en el siguiente código:

var g = +new Date; //11 bytes shorter 

(Véalos trabajando aquí: http://jsfiddle.net/es4XW/2/)

Ahora, cuando busque en el código fuente de la página principal de Google, encontrará la segunda convención utilizada 11 veces. Por lo tanto, parece que en cada ocasión Google podría ahorrar 11 bytes, 121 bytes en total.

La compresión y el almacenamiento en caché jugarán un papel en la mitigación de esto, pero seguramente valdría la pena que Google haga este simple cambio.

Compara y contrasta esto con el código de la página principal de Amazon, que sí utiliza la tercera convención (aunque no en todas las ocasiones).

¿Por qué Google no está interesado en esta optimización? Aunque 121 bytes son cacahuetes para la mayoría de nosotros, hubiera pensado que hubieran estado interesados ​​en exprimir hasta el último pedazo de rendimiento de su página principal.

+0

En cuanto a la votación cercana. Lo que no está claro? Me complace editar para proporcionar más aclaraciones. –

+0

voté porque creo que preguntar por qué * Google * (o alguien) hace algo que no encaja aquí ... Una pregunta adecuada sería: "¿cuáles son los beneficios de la sintaxis más larga"? –

+0

nota: 'document.getElementById' solo aparece 30 veces, y hay muchas más funciones dom, sería fácil guardar ~ 500-1000 bytes al acortarlas. –

Respuesta

4

Yo diría legibilidad y, por lo tanto, mantenibilidad sobre ahorros de byte marginal. Además, las primeras 2 opciones son a prueba de futuro, mientras que la tercera opción es un detalle de implementación que podría cambiar o funcionar de manera diferente en todos los motores (por ejemplo, Rhino, Nodo).

Una cuarta posibilidad de sus ejemplos sería para envolver la llamada a una función:

var now = function() { 
    return (new Date().getTime()); 
} 

Por supuesto, esto sólo ahorra unos pocos bytes vez que se llame por lo menos un par de veces.

+0

¿De qué manera es la tercera opción específica para la implementación? Hubiera pensado que ECMAScript especificaría el comportamiento al convertir un DateTime en un número. Diciendo eso, no he buscado ... :) –

+0

Dije que 'podría 'cambiarse y es específico de la implementación actual que arroja automáticamente todo en función del contexto. Obviamente, ahora funciona en todos los analizadores de JS, pero dice que debido a algunas optimizaciones, un analizador fuertemente tipado no manejaría esto de manera diferente. Pero correcto, podría haber sido más claro en eso. :) –

+0

No parece que les importe mucho proporcionar código de mantenimiento a los clientes del usuario final. Pero la cuarta posibilidad se implementa realmente: 'google.time()' – Robert

Cuestiones relacionadas