¿Los nombres de las variables afectan el rendimiento de los sitios web?

10

¿Los nombres de las variables afectan el rendimiento del sitio web? Sé que este será un número muy bajo, pero ¿alguien puede proporcionar las razones para no elegir un nombre de variable largo en el aspecto del rendimiento?

Avinash
fuente
2
Aclare su pregunta: ¿dónde está esta variable y en qué idioma está escrita?
Luke Graham el
16
Nunca, NUNCA elija nombres de variables cortos e ilógicos si su razonamiento es el rendimiento (cuestionable). El código fuente está ahí para que otras personas lo lean, no para satisfacer las computadoras y sus ganancias de rendimiento microscópico.
Michael JV
Estoy usando PHP ..
Avinash
2
... ¿Y eres dueño de xpertdeveloper.com?
Jim G.
3
Hola Avinash, ¿puedes explicar en tu pregunta tu razón para pensar que este podría ser el caso?

Respuestas:

17

¿Puede alguien proporcionar las razones para no elegir un nombre de variable largo en el aspecto del rendimiento?

Michael cubrió la respuesta (es decir, No), pero los nombres de las variables afectan el rendimiento del programador . Si trae un nuevo desarrollador o alguien que no está familiarizado con el código, tener nombres de variables largos y / o confusos puede distraer y retrasar el proceso de comprensión.

En general, desea usar nombres cortos y descriptivos de variables porque son más fáciles de leer. Imagínese si tiene que ignorar su código durante 10 años y luego comprender todo nuevamente. ¿Prefieres leer "getInput" o "getInputFromUserWhoInputsStringOrElseInformReaderOfError"? (exageración, por supuesto: P)

Sin embargo, hay momentos en que tener un nombre un poco más largo puede ser beneficioso. Por ejemplo, getBirthdayInput () sería mucho más descriptivo que getInput (). Desea simplificar hasta cierto punto, pero la simplificación excesiva también puede ser problemática.

Veintiuna
fuente
66
para leer nombres largos es mejor, si encuentra "getInputFromUserWhoInputsStringOrElseInformReaderOfError" no necesita leer la documentación de qué es esta función, si encuentra "getInput" necesita. Y después de 10 años, la documentación será incorrecta, incompleta o faltante. getInputFromUserWhoInputsStringOrElseInformReaderOfError es ciertamente demasiado largo, pero comprender qué es largo es mejor (y no me importa que las mujeres digan que el tamaño no importa).
Dainius
No estoy de acuerdo en este caso. Creo que solo leyendo el código sería bastante fácil entender lo que hace getInput (), especialmente si imprime "entrada no válida" o algo inmediatamente después. Sin embargo, definitivamente hay momentos en que un nombre más largo puede ser mejor. ¡Lo editaré en!
BlackJack
ofc depende del contexto, pero en mi experiencia el nombre más largo es mejor (pero no siempre que getInputFromUserWhoInputsStringOrElseInformReaderOfError). Y el contexto realmente importante ya que file.read () es más rápido que file.readAllFileAsByteArray (). Pero como dije generalmente, en mi humilde opinión, el nombre más largo proporciona más información.
Dainius
1
Si la documentación es incorrecta, incompleta o falta, la base de código está condenada de todos modos.
Christopher Mahan
2
Esto está respondiendo una pregunta que no se hizo.
16

No, no lo hará. En términos generales, cuando se compila el código, los nombres de las variables se reemplazan por la dirección de memoria a la que hacen referencia. Las computadoras no saben nada sobre nombres de variables; solo quieren saber dónde se almacenan los valores.

Las variables son símbolos, nada más. Reemplazan los valores hexadecimales con nombres para que los programadores tengan más facilidad para comprender lo que están haciendo. Por lo tanto, no habrá aumento de rendimiento al elegir nombres de variables más cortos.

Dicho esto, puede obtener mejoras minúsculas (y estoy hablando microscópicamente) en los tiempos de compilación y la primera interpretación de JIT, pero eso es solo porque el analizador tarda unos pocos ciclos de CPU menos para leer el nombre de la variable. Este es un costo único, y es estadísticamente insignificante cuando se preocupa por el rendimiento.

Michael K
fuente
11
Si bien su respuesta es correcta para la programación de aplicaciones, el OP se refiere a sitios web y, por lo tanto, existe la posibilidad de que esté utilizando un lenguaje interpretado. En tal caso, el código debería leerse desde el archivo y luego interpretarse. En este caso, un nombre de variable más largo tardará más en cargarse y analizarse. Sin embargo, la ganancia de rendimiento será insignificante y se verá enormemente compensada por la molestia adicional para el programador de leer y comprender el código.
Gavin Coates
1
@Gavin También es correcto para los idiomas interpretados: "JIT primera interpretación". La mayoría de los lenguajes interpretados ahora se compilan a medida que se ejecutan en lugar de ejecución línea por línea, AFAIK.
Michael K
1
Michael: para compilar, el archivo primero debe leerse en la memoria. Este proceso llevará más tiempo dependiendo de la longitud del archivo. Nombres de variables más largos = archivos más largos.
Gavin Coates
La pregunta está etiquetada como PHP. PHP aún no tiene JIT, que será una nueva característica de la versión 8.0 prevista para finales de este año. Sí se compila en código de bytes antes de la ejecución, y el código de bytes generalmente se almacena en caché en servidores web para usarse en múltiples solicitudes.
bdsl
8

A menos que esté utilizando caché de código operativo (también conocido como "aceleradores PHP"), entonces sí hay un impacto. Pero ese impacto es tan bajo que puede ser descuidado. Si utiliza el caché de código de operación, entonces no hay impacto

vartec
fuente
1
y si te importa tanto el rendimiento que consideras acortar los nombres de las variables para ganar unos pocos ciclos, no usar caché de código operativo sería criminal ... y se recomienda cambiar a un lenguaje compilado como C.
SF.
Pero, obviamente, ese impacto es acumulativo, por lo que cuanto mayor sea la aplicación, mayor será el impacto, ¿verdad?
n00dles
Zend Opcache se ha enviado con PHP desde hace varios años, por lo que todos deberían usarlo. Creo que generalmente está habilitado por defecto.
bdsl
3

Si bien Michael es correcto para la programación de aplicaciones, su pregunta se refiere al desarrollo web con PHP, que es un lenguaje interpretado. En tal caso, el código debería leerse desde el archivo y luego interpretarse. En este caso, un nombre de variable más largo tardará más en cargarse y analizarse.

Sin embargo, el rendimiento al hacerlo será insignificante y probablemente estará en la región de fracciones de milisegundos para un guión completo. Siempre puede probarlo con un script de muestra y utilizar un método de sincronización como el que se detalla en http://www.developerfusion.com/code/2058/determine-execution-time-in-php/ pero esto probablemente no comience a contar el tiempo hasta que se haya leído el archivo. Además, el tiempo de ejecución entre reintentos variará mucho más que la diferencia entre las longitudes de nombres variables, por lo que deberá realizar un número significativo de reintentos y tomar el promedio de cada uno antes de poder obtener un promedio remotamente significativo.

Como señala BlackJack, los nombres más largos pueden ser mucho más difíciles de entender y requieren mucho esfuerzo adicional para escribir (y son mucho más propensos a los errores tipográficos). Si bien puede haber una pequeña ganancia de rendimiento, esto no justifica la molestia adicional creada para el programador. Como tal, se prefieren nombres de variables cortos, concisos y fáciles de entender.

En resumen, no se preocupe por el nombre de longitud variable, sino concéntrese en escribir código limpio y significativo.

Gavin Coates
fuente
1

Tal vez :

El código del servidor generalmente se compila y la longitud del nombre variable no lo afectará por las razones mencionadas. Sin embargo, si el nombre de la variable se usa para generar marcado, varias operaciones de cadena. Dado que la respuesta HTTP (que contiene marcado / devuelto json / datos devueltos) es mayor, tomará un poco más de tiempo, aunque la diferencia será insignificante. Si JavaScript no está minimizado, será un archivo más grande, que demorará más en llegar al cliente.

Además de minimizar los archivos JavaScript, cualquier esfuerzo de optimización para una aplicación web / sitio web se gastará mejor en otros aspectos.

StuperUser
fuente
1

Sí, lo hará, pero no en el sentido en que está pensando.

Con nombres de variables incorrectos, los desarrolladores se confundirán fácilmente en el código fuente. Será difícil de leer y difícil de entender.

Al final, el código fuente será difícil de mantener y será casi imposible hacer que evolucione. Esto conducirá inevitablemente a mayores costos de mantenimiento, mayores costos de desarrollo, más errores y peores resultados .

El nombre de la variable no tendrá absolutamente ninguna influencia en tiempo de ejecución, y totalmente insignificante en el momento de la compilación. Pero los malos nombres conducirán inevitablemente a un mal rendimiento porque nadie entiende el código y termina en una pila de hacks uno encima del otro, lo que empeora las cosas cada vez.

Lea estos para saber sobre el buen nombre de variable: http://tottinge.blogsome.com/meaningfulnames

Tenga en cuenta que si siente la necesidad de un nombre de variable muy largo, significa que su código está mal diseñado. Un nombre de variable siempre se expresa en un contexto: espacio de nombres, nombre de clase, nombre de archivo, carpeta, nombre de función, etc. Por lo tanto, si el nombre debe ser largo para ser explícito, esto significa que lo que está tratando de nombrar NO ES ' PERTENGO AQUÍ . En este caso, piense en colocar este código en el lugar apropiado o cree ese lugar si aún no existe.

deadalnix
fuente
0

La respuesta es obviamente sí, en lo que respecta a php.

Las respuestas que dicen que no hará la diferencia no son necesariamente correctas. Por ejemplo, tengo un pequeño script php, solo unas pocas líneas, pero debe recorrer alrededor de 1,950,000 veces antes de que termine su trabajo, por lo que aunque no se note una sola ejecución del script, esas fracciones de segundo se suman sustancialmente cuando bucle muchas veces.

Diorthotis
fuente
1
Pero te equivocas. Cualquier intérprete php decente analizará el código solo una vez. Los tipos que escriben intérpretes php no son estúpidos.
gnasher729
@ gnasher729 Está haciendo suposiciones sobre cómo funciona el intérprete o todo el servidor y nunca debe hacerlo. Incluso si solo se analizará una vez por ejecución, puede volver a analizarse en cada ejecución y no almacenar en caché una representación analizada (otros sistemas lo harán pero no puede saberlo de antemano). Y, por lo general, cuantos más bytes tenga un script, más tardará en analizarse. Entonces, Diorthotis no está equivocado en general, es posible que solo esté equivocado con respecto a un sistema específico.
Mecki
0

Puede usar nombres cortos que hagan que su código sea menos legible. Ahorrará un microsegundo o dos. Pero debido a que el código es menos legible, es más difícil mejorarlo y hacerlo más rápido. Por lo tanto, su código imposible de mantener con nombres cortos terminará funcionando significativamente más lento al final.

Entonces, para responder a su pregunta ("¿afecta el rendimiento"): Sí, pero no de la manera que le gusta.

gnasher729
fuente