ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° додавањС ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° процСсот Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜Π° Π½Π° GCC

Како Π΄Π΅Π» ΠΎΠ΄ истраТувачки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠŸΠ°Ρ€Π°Π»Π΅Π»Π΅Π½ GCC Π—Π°ΠΏΠΎΡ‡Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π΄Π° сС Π΄ΠΎΠ΄Π°Π΄Π΅ карактСристика Π½Π° GCC ΡˆΡ‚ΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° процСсот Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜Π° Π΄Π° сС ΠΏΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ нишки. Π’ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², Π·Π° Π΄Π° сС Π·Π³ΠΎΠ»Π΅ΠΌΠΈ Π±Ρ€Π·ΠΈΠ½Π°Ρ‚Π° Π½Π° Π³Ρ€Π°Π΄Π΅ΡšΠ΅ Π½Π° ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ˜Π°Π΄Ρ€Π΅Π½ΠΈ систСми, Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° make користи Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ Π½Π° посСбни процСси Π½Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΠΎΡ‚, ΠΎΠ΄ ΠΊΠΎΠΈ сСкоја Π³Ρ€Π°Π΄ΠΈ посСбна Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° со ΠΊΠΎΠ΄. Новиот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ СкспСримСнтира со ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€, ΡˆΡ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΎ ќС Π³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ пСрформанситС Π½Π° ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ˜Π°Π΄Ρ€Π΅Π½ΠΈΡ‚Π΅ систСми.

Π—Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ посСбна ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Ρ‡ΠΊΠ° Π³Ρ€Π°Π½ΠΊΠ° Π½Π° GCC, која Π½ΡƒΠ΄ΠΈ Π½ΠΎΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ β€žβ€”param=num-threads=Nβ€œ Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° нишки. Π’ΠΎ ΠΏΠΎΡ‡Π΅Ρ‚Π½Π°Ρ‚Π° Ρ„Π°Π·Π°, Π³ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π²ΠΌΠ΅ прСносот Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Π»Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΎ посСбни нишки, ΠΊΠΎΠΈ сС Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π°Π°Ρ‚ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΎ Π·Π° сСкоја Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° ΠΈ ΠΌΠΎΠΆΠ°Ρ‚ лСсно Π΄Π° сС ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π°Ρ‚. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° GIMPLE ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° хардвСрски нСзависни ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΈ ја ΠΎΡ†Π΅Π½ΡƒΠ²Π°Π°Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π΅Π΄Π½ΠΈ со Π΄Ρ€ΡƒΠ³ΠΈ сС смСстСни Π²ΠΎ посСбни нишки.

Π’ΠΎ слСдната Ρ„Π°Π·Π°, исто Ρ‚Π°ΠΊΠ°, сС ΠΏΠ»Π°Π½ΠΈΡ€Π° Π΄Π° сС ΠΏΡ€Π΅Ρ„Ρ€Π»Π°Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Π»Π½ΠΈΡ‚Π΅ RTL ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΎ посСбни нишки, зСмајќи Π³ΠΈ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ карактСристикитС Π½Π° хардвСрската ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°. ПослС Ρ‚ΠΎΠ°, ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΈΠ½Ρ‚Ρ€Π°ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Π»Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (IPA) ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Ρ‚ΠΈ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ Π²Π½Π°Ρ‚Ρ€Π΅ Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π°, Π±Π΅Π· ΠΎΠ³Π»Π΅Π΄ Π½Π° спСцификитС Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°Ρ‡ΠΊΠ°Ρ‚Π° врска засСга Π΅ собирачот Π½Π° Ρ“ΡƒΠ±Ρ€Π΅, кој Π΄ΠΎΠ΄Π°Π΄Π΅ Π³Π»ΠΎΠ±Π°Π»Π½Π° Π±Ρ€Π°Π²Π° која Π³ΠΈ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° ΡΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ“ΡƒΠ±Ρ€Π΅ Π΄ΠΎΠ΄Π΅ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ со повСќС нишки (Π²ΠΎ ΠΈΠ΄Π½ΠΈΠ½Π° собирачот Π½Π° Ρ“ΡƒΠ±Ρ€Π΅ ќС Π±ΠΈΠ΄Π΅ ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° GCC со повСќС нишки).

Π—Π° Π΄Π° сС ΠΏΡ€ΠΎΡ†Π΅Π½Π°Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²ΠΎ пСрформанситС, ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ Π΅ тСст ΠΏΠ°ΠΊΠ΅Ρ‚ кој ја составува Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° gimple-match.c, која Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° повСќС ΠΎΠ΄ 100 илјади Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄ ΠΈ 1700 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ВСстовитС Π½Π° систСм со процСсор Intel Core i5-8250U со 4 Ρ„ΠΈΠ·ΠΈΡ‡ΠΊΠΈ Ρ˜Π°Π΄Ρ€Π° ΠΈ 8 Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ (Hyperthreading) ΠΏΠΎΠΊΠ°ΠΆΠ°Π° Π½Π°ΠΌΠ°Π»ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° Intra Procedural GIMPLE ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΎΠ΄ 7 Π½Π° 4 сСкунди ΠΊΠΎΠ³Π° сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ 2 нишки ΠΈ Π½Π° 3 сСкунди ΠΊΠΎΠ³Π° сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ 4 нишки, Ρ‚.Π΅. Π—Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π°ΡšΠ΅ Π½Π° Π±Ρ€Π·ΠΈΠ½Π°Ρ‚Π° Π½Π° Ρ„Π°Π·Π°Ρ‚Π° Π½Π° ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ ΡˆΡ‚ΠΎ сС Ρ€Π°Π·Π³Π»Π΅Π΄ΡƒΠ²Π° бСшС постигнато Π·Π° 1.72 ΠΈ 2.52 ΠΏΠ°Ρ‚ΠΈ, соодвСтно. ВСстовитС исто Ρ‚Π°ΠΊΠ° ΠΏΠΎΠΊΠ°ΠΆΠ°Π° Π΄Π΅ΠΊΠ° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Ρ˜Π°Π΄Ρ€Π° со Hyperthreading Π½Π΅ Π΄ΠΎΠ²Π΅Π΄ΡƒΠ²Π° Π΄ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Π½ΠΈ пСрформанси.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° додавањС ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° процСсот Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜Π° Π½Π° GCC

Π¦Π΅Π»ΠΎΠΊΡƒΠΏΠ½ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π³Ρ€Π°Π΄Π΅ΡšΠ΅ бСшС Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ Π·Π° ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 10%, Π½ΠΎ спорСд ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°ΡšΠ°Ρ‚Π°, ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° RTL ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ ќС ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ ΠΏΠΎΡΡ‚ΠΈΠ³Π½ΡƒΠ²Π°ΡšΠ΅ ΠΏΠΎΠΎΠΏΠΈΠΏΠ»ΠΈΠ²ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ, бидСјќи ΠΎΠ²Π°Π° Ρ„Π°Π·Π° ΠΎΠ΄Π·Π΅ΠΌΠ° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ повСќС Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. ΠŸΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ ΠΏΠΎ RTL ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°, Π²ΠΊΡƒΠΏΠ½ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ ќС сС Π½Π°ΠΌΠ°Π»ΠΈ Π·Π° 1.61 ΠΏΠ°Ρ‚ΠΈ. По ΠΎΠ²Π°, ќС Π±ΠΈΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° Π³Ρ€Π°Π΄Π΅ΡšΠ΅ Π·Π° ΡƒΡˆΡ‚Π΅ 5-10% со ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ Π½Π° IPA ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° додавањС ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° процСсот Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜Π° Π½Π° GCC

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€