javascript - una - operador ternario php
javascript if/else o el operador ternario es más rápido? (6)
La diferencia de velocidad será insignificante; use lo que encuentre más legible. En otras palabras, dudo mucho que un cuello de botella en su código se deba al uso de la construcción condicional incorrecta.
¿Qué método es más rápido o más receptivo en javascript, if / else o el operador ternario? ¿Se prefiere usar uno u otro y, de ser así, por qué?
No hay diferencia en la velocidad.
Algunos prefieren el if / else para la legibilidad. Personalmente, utilizo el operador ternario siempre que la lógica es lo suficientemente trivial para entender en una línea.
No pensé que la prueba de @charlie robert fuera justa
Aquí está mi jsperf
resultado:
- estricto igual es el más rápido
- estricto ternario es un 33% más lento
- truey falsy es un 49% más lento
- falsedad ternaria falsedad es 55% más lenta
- if else y ternary son más o menos lo mismo.
normal igual y normal ternario más lento.
igual estricto:
var a = true, b;
if (a === true) {
b = true;
} else {
b = false
}
if (a === false) {
b = true;
} else {
b = false;
}
ternario estricto igual
var a = true, b;
b = (a === true) ? true : false;
b = (a === false) ? true : false;
igualdad simple
var a = true, b;
if (a == true) {
b = true;
} else {
b = false;
}
if (a == false) {
b = true;
} else {
b = false;
}
igualdad ternaria simple
var a = true, b;
b = (a == true) ? true : false;
b = (a == false) ? true : false;
verdad / falsy
var a = true, b;
if (a) {
b = true;
} else {
b = false;
}
if (!a) {
b = true;
} else {
b = false;
}
ternario truthy / falsy
var a = true, b;
b = (a) ? true : false;
b = (!a) ? true : false;
Parece que nadie hizo ningún perfil real. Aquí está el código que utilicé:
test = function() {
for (var i = 0; i < 10000000; i++) {
var a = i < 100 ? 1 : 2;
/*
if(i < 100) {
var a = 1;
}else{
var a = 2;
}
*/
}
}
test();
El uso del bloque if
/ else
lugar del operador ternario produce un aumento del rendimiento de 1.5 - 2x en Google Chrome v21 bajo OS X Snow Leopard .
Como un caso de uso donde esto es muy importante, la síntesis de audio en tiempo real es cada vez más común con JavaScript. Este tipo de diferencia de rendimiento es un gran problema cuando un algoritmo se ejecuta 44100 veces por segundo.
a la respuesta de Charlie Roberts arriba, agregaría:
el siguiente enlace brinda algunas respuestas incisivas; el resultado de los switches en Firefox es el más llamativo: http://jsperf.com/if-else-vs-arrays-vs-switch-vs-ternary/39
Aquellos que preguntan por qué alguien investigaría la optimización hasta este grado, ¡haría bien en investigar WebGL!
El operador ternario es solo azúcar sintáctico, no un refuerzo de rendimiento.