stringtranslate.com

Salto de subprocesos

En informática , el enhebrado de saltos es una optimización del compilador de un salto directamente a un segundo salto. Si la segunda condición es un subconjunto o inverso de la primera, se puede eliminar o enhebrar a través del primer salto. [1] Esto se hace fácilmente en una sola pasada a través del programa, siguiendo saltos encadenados acíclicos hasta que el compilador llega a un punto fijo.

Beneficios

El principal beneficio de la creación de subprocesos con saltos es la reducción de la cantidad de saltos ejecutados dinámicamente. Esto abre el camino a futuras optimizaciones, ya que hay una disminución en la cantidad de condicionales, lo que mejorará el rendimiento. En promedio, se puede esperar que se omitan entre 2 y 3 instrucciones como resultado de una eliminación exitosa de una rama de tiempo de ejecución . [2]

Ejemplos

El siguiente pseudocódigo demuestra cuándo se puede realizar un salto mediante subproceso.

 10. a = AlgúnNúmero(); 20. SI a > 10 IR A 50 ... 50. SI a > 0 IR A 100 ...

El salto en la línea 50 siempre se realizará si se realiza el salto en la línea 20. Por lo tanto, siempre que la línea 100 esté dentro del rango de alcance del salto (o el tamaño del salto no importe), el salto en la línea 20 se puede modificar de manera segura para saltar directamente a la línea 100.

Otro ejemplo muestra el salto de subproceso de 2 condiciones de superposición parcial:

void baz ( bool x , bool y , bool z ) {        si ( x && y )    bar (); si ( y || z )    foo ();}

Lo anterior se puede transformar en:

void baz ( bool x , bool y , bool z ) {        si ( x && y ) {     bar (); ir a jmp ;  } si ( y || z ) {    saltar : foo (); }}

Si se toma la primera rama xy yambas son verdaderas ( conjunción lógica ), no es necesario evaluar la expresión ( disyunción lógica ). Por lo tanto, se realiza un salto a la etiqueta . [2]y || z jmp

Véase también

Referencias

  1. ^ "Optimizar opciones - Uso de la colección de compiladores GNU (GCC)".
  2. ^ ab "Una introducción sencilla a las optimizaciones de subprocesos de salto | Red Hat Developer". desarrolladores.redhat.com . 2019-03-13 . Consultado el 2023-01-08 .