Com a part d'un projecte de recerca
Per a proves
En la següent etapa, també es preveu moure les optimitzacions RTL interprocedimentals a fils separats, tenint en compte les característiques de la plataforma de maquinari. Després d'això, tenim previst implementar la paral·lelització d'optimitzacions intraprocedimentals (IPA) aplicades al codi dins de la funció, independentment de les especificitats de la trucada. L'enllaç limitant ara per ara és el garbage collector, que ha afegit un bloqueig global que desactiva les operacions de recollida d'escombraries mentre s'executa en mode multiprocés (en el futur, el garbage collector s'adaptarà per a l'execució multifils de GCC).
Per avaluar els canvis en el rendiment, s'ha preparat una suite de proves que reuneix el fitxer gimple-match.c, que inclou més de 100 mil línies de codi i 1700 funcions. Les proves en un sistema amb una CPU Intel Core i5-8250U amb 4 nuclis físics i 8 virtuals (Hyperthreading) van mostrar una disminució del temps d'execució de les optimitzacions GIMPLE intraprocedurals de 7 a 4 segons quan s'executen 2 fils i a 3 segons quan s'executen 4. fils, és a dir. Es va aconseguir un augment de la velocitat de l'etapa de muntatge en qüestió en 1.72 i 2.52 vegades, respectivament. Les proves també van demostrar que l'ús de nuclis virtuals amb Hyperthreading no augmenta el rendiment.
El temps de construcció global es va reduir aproximadament un 10%, però segons les previsions, la paral·lelització de les optimitzacions RTL permetrà aconseguir resultats més tangibles, ja que aquesta etapa requereix molt més temps durant la compilació. Aproximadament després de la paral·lelització RTL, el temps total de muntatge es reduirà en 1.61 vegades. Després d'això, serà possible reduir el temps de construcció en un altre 5-10% paral·lelitzant les optimitzacions IPA.
Font: opennet.ru