w3schools una ternario sola operator operador linea ejemplo anidado javascript performance

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:

  1. estricto igual es el más rápido
  2. estricto ternario es un 33% más lento
  3. truey falsy es un 49% más lento
  4. falsedad ternaria falsedad es 55% más lenta
  5. 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.