Sebagai bagian dari proyek penelitian
Untuk pengujian
Pada tahap selanjutnya, direncanakan juga untuk memindahkan optimasi RTL antarprosedural ke thread terpisah, dengan mempertimbangkan karakteristik platform perangkat keras. Setelah itu, kami berencana untuk mengimplementasikan paralelisasi optimasi intraprosedural (IPA) yang diterapkan pada kode di dalam fungsi, terlepas dari spesifikasi panggilannya. Tautan pembatas untuk saat ini adalah pengumpul sampah, yang telah menambahkan kunci global yang menonaktifkan operasi pengumpulan sampah saat berjalan dalam mode multi-thread (di masa depan, pengumpul sampah akan diadaptasi untuk eksekusi GCC multi-thread).
Untuk mengevaluasi perubahan kinerja, rangkaian pengujian telah disiapkan yang merakit file gimple-match.c, yang mencakup lebih dari 100 ribu baris kode dan 1700 fungsi. Pengujian pada sistem dengan CPU Intel Core i5-8250U dengan 4 core fisik dan 8 virtual (Hyperthreading) menunjukkan penurunan waktu eksekusi optimasi Intra Prosedural GIMPLE dari 7 menjadi 4 detik saat menjalankan 2 thread dan menjadi 3 detik saat menjalankan 4 benang, yaitu Peningkatan kecepatan tahap perakitan yang dipertimbangkan dicapai masing-masing sebesar 1.72 dan 2.52 kali. Pengujian juga menunjukkan bahwa penggunaan inti virtual dengan Hyperthreading tidak menghasilkan peningkatan kinerja.
Waktu pembuatan keseluruhan berkurang sekitar 10%, namun menurut perkiraan, memparalelkan pengoptimalan RTL akan memungkinkan pencapaian hasil yang lebih nyata, karena tahap ini membutuhkan lebih banyak waktu selama kompilasi. Kira-kira setelah paralelisasi RTL, total waktu perakitan akan berkurang 1.61 kali lipat. Setelah ini, waktu pembuatan dapat dikurangi sebesar 5-10% lagi dengan memparalelkan pengoptimalan IPA.
Sumber: opennet.ru