Todos sabemos acerca de un cortocircuito en las expresiones lógicas, es decir, cuando¿Existe tal cosa como la multiplicación de cortocircuitos?
if (False AND myFunc(a)) then
...
no molesta a la ejecución de myFunc()
porque no hay forma de la condición if
puede ser verdad.
tenía curiosidad acerca de si existe un equivalente para su ecuación algebraica todos los días, dicen
result = C*x/y + z
Si C=0
no hay ningún punto en la evaluación del primer término. No importaría mucho en cuanto a rendimiento si x
y y
fueran escalares, pero si pretendemos que son matrices grandes y las operaciones son costosas (y aplicables a las matrices) entonces seguramente haría la diferencia. Por supuesto, podrías evitar un caso tan extremo lanzando una declaración if C!=0
.
Entonces mi pregunta es si tal característica existe y si es útil. No soy muy programador, por lo que probablemente lo haga bajo algún nombre que no haya encontrado; si es así, por favor aclararme :)
lógico cortocircuitos es un concepto importante desde un punto de vista de la funcionalidad, mientras que "la aritmética cortocircuitos" es simplemente una optimización en el nivel del compilador sin diferencia funcional. Es posible que su idioma de elección ya lo esté haciendo entre bastidores sin que lo note. – deceze
Alguien que sabe más que yo debería contestar, pero me imagino que tendrías problemas si cortocircuitas la división. ¿Qué pasaría, por ejemplo, si y = 0? Si se cortocircuita, devolvería 0 cuando la respuesta es realmente un error. – Nate
@deceze Los cortocircuitos aritméticos ciertamente tendrían diferencias funcionales más allá de la optimización, al igual que los cortocircuitos lógicos. Considera 'result = C * myfunction()'. Si 'C == 0' hace que la expresión aritmética se cortocircuite, entonces' myfunction' nunca se invoca, y no se producen los efectos secundarios que pueda haber tenido (al igual que con un cortocircuito lógico). –