¿Cuál es, en promedio, más rápido - verifique el valor, si es necesario, asigne o simplemente asigne? O, en C++ términos:Leer luego escritura condicional frente a escribir
bool b;
if(b)
b = false;
o
b = false;
Suponga que la condición si() es verdadera con 50% de probabilidad. La respuesta será, muy probablemente, altamente dependiente de la arquitectura; por favor, exprese sus consideraciones de bajo nivel. Escribir siempre ensucia la línea de caché, ¿verdad? Así que al evitar una escritura evitamos un enjuague de caché en 0.5 casos. Pero una memoria caché lo suficientemente inteligente podría detectar una escritura trivial y no ensuciarse. Pero la escritura incondicional siempre es exactamente una operación de memoria, y la lectura-escritura es, en promedio, 1.5 operaciones.
Descargo de responsabilidad: esta es una pregunta de curiosidad, no es un problema que realmente enfrente.
¿Importa lógicamente qué b es si el resultado final es que b debería ser falso? –
@Fuzzy: se trata de optimización, no de lógica. –
sí, pero el segundo es más fácil de leer y dice lo que hace, en mi opinión. – Earlz