javascript - golpes - ¿Los comentarios afectan el rendimiento?
consecuencias de la caida de un celular (3)
El mayor efecto que tienen los comentarios es inflar el tamaño del archivo y, por lo tanto, ralentizar la descarga del script. De ahí que todos los sitios profesionales utilicen un minimizador para una versión productiva para reducir el js al mínimo posible.
¿Tengo razón al decir que el código JavaScript no está compilado, ni siquiera JIT? Si es así, ¿significa eso que los comentarios tienen un efecto en el rendimiento, y debería tener mucho cuidado en dónde coloco mis comentarios? Por ejemplo, colocar los comentarios de las funciones arriba y fuera de la definición de la función cuando sea posible, y definitivamente evitar colocar comentarios dentro de los loops, si quisiera maximizar el rendimiento. Sé que en la mayoría de los casos (al menos en casos sin bucle), el cambio en el rendimiento sería insignificante, pero creo que esto sería algo que es bueno saber y tener en cuenta, especialmente para los desarrolladores de front-end / js. . Además, se hizo una pregunta relevante sobre una evaluación js que tomé recientemente.
Puede tener algún efecto. Un efecto muy minimalista, aunque (incluso IE6 maneja los comentarios correctamente! Para ser confirmado ... ).
Sin embargo, la mayoría de las personas usa un minificador que elimina los comentarios. Entonces está bien.
También:
V8 aumenta el rendimiento al compilar JavaScript en el código máquina nativo antes de ejecutarlo.
¿Tengo razón al decir que el código JavaScript no está compilado, ni siquiera JIT?
No. Aunque JavaScript es tradicionalmente un lenguaje "interpretado" (aunque no necesariamente tiene que serlo), la mayoría de los motores de JavaScript lo compilan sobre la marcha siempre que sea necesario. El V8 (el motor en Chrome y NodeJS) solía compilarse de forma inmediata y rápida, luego volvía y optimizaba agresivamente cualquier código que se usara mucho (el antiguo stack de FullCodegen + TurboFan); Hace un tiempo, después de haber hecho muchas mediciones en el mundo real, cambiaron al análisis inicial para interpretar y byteocde y luego compilar si el código se reutilizaba en gran medida (el nuevo stack Ignition + TurboFan), obteniendo un importante ahorro de memoria al no compilar ejecutarse -un código de configuración. Incluso los motores que son menos agresivos casi con certeza al menos analizan el texto en algún tipo de bytecode, descartando los comentarios con anticipación.
Recuerde que "interpretado" frente a "compilado" suele ser más una cuestión ambiental que una cosa de lenguaje; hay intérpretes C, y hay compiladores de JavaScript. Los idiomas tienden a estar estrechamente asociados con los entornos (como la forma en que JavaScript se asocia con el entorno del navegador web, aunque siempre se ha usado de forma más amplia, incluso en 1995), pero incluso entonces (como hemos visto), puede haber variación
Si es así, ¿eso significa que los comentarios tienen un efecto en el rendimiento ...
Una muy, muy, muy mínima, en la etapa de análisis inicial. Pero los comentarios son muy fáciles de escanear, nada de qué preocuparse.
Sin embargo, si realmente te preocupa, puedes minimizar tu script con herramientas como jsmin
o Closure Compiler (incluso con simples optimizaciones). El primero simplemente quitará los comentarios y espacios en blanco innecesarios, cosas así (aún bastante efectivas); el último hace eso y realmente entiende el código y hace algo de línea y tal. Por lo tanto, puede comentar libremente y luego usar esas herramientas para asegurarse de que cualquier impacto minúsculo que puedan tener esos comentarios cuando se carga la secuencia de comandos por primera vez se omita mediante el uso de herramientas de minificación.
Por supuesto, lo que tiene que ver con el rendimiento de JavaScript es que es difícil predecir de forma confiable el motor cruzado, porque los motores varían mucho. Entonces los experimentos pueden ser divertidos:
- Aquí hay un experimento que (en teoría) reparses / recrea la función cada vez
- Aquí hay uno que solo analiza / crea la función una vez y la vuelve a usar
¿Resultado? Mi opinión es que no hay una diferencia discernible dentro del error de medición de la prueba.