Como parte dun proxecto de investigación
Para probas
Na seguinte fase, tamén se planea mover as optimizacións RTL interprocedurais en fíos separados, tendo en conta as características da plataforma de hardware. Despois diso, planeamos implementar a paralelización de optimizacións intraprocedimentais (IPA) aplicadas ao código dentro da función, independentemente das características específicas da chamada. A ligazón limitante polo momento é o colector de lixo, que engadiu un bloqueo global que desactiva as operacións de recollida de lixo mentres se executa en modo multiproceso (no futuro o colector de lixo adaptarase para a execución multiproceso de GCC).
Para avaliar os cambios no rendemento, preparouse unha suite de probas que ensambla o ficheiro gimple-match.c, que inclúe máis de 100 mil liñas de código e 1700 funcións. As probas nun sistema cunha CPU Intel Core i5-8250U con 4 núcleos físicos e 8 virtuais (Hyperthreading) mostraron unha diminución do tempo de execución das optimizacións de GIMPLE Intra Procedural de 7 a 4 segundos cando se executan 2 fíos e a 3 segundos cando se executan 4. fíos, é dicir. Conseguiuse un aumento da velocidade da fase de montaxe en consideración en 1.72 e 2.52 veces, respectivamente. As probas tamén demostraron que o uso de núcleos virtuais con Hyperthreading non aumenta o rendemento.
O tempo de compilación global reduciuse nun 10 % aproximadamente, pero segundo as previsións, a paralelización das optimizacións RTL permitirá lograr resultados máis tanxibles, xa que esta etapa leva moito máis tempo durante a compilación. Aproximadamente despois da paralelización RTL, o tempo total de montaxe reducirase 1.61 veces. Despois disto, será posible reducir o tempo de construción noutro 5-10% paralelizando as optimizacións de IPA.
Fonte: opennet.ru