เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฑเบš GCC

เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เป‰เบงเบฒ GCC เบ‚เบฐเปœเบฒเบ™ เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเป‰เบเบฑเบš GCC เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบซเบผเบฒเบเบซเบปเบงเบ‚เปเป‰เบ‚เบฐเบซเบ™เบฒเบ™. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™เบฅเบฐเบšเบปเบšเบซเบผเบฒเบเปเบเบ™, เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบฅเบฐเบซเบฑเบ”เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เป‚เบ„เบ‡เบเบฒเบ™เปƒเบซเบกเปˆเบเปเบฒเบฅเบฑเบ‡เบ—เบปเบ”เบฅเบญเบ‡เบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ™เปƒเบ™เบฅเบฐเบ”เบฑเบš compiler, เป€เบŠเบดเปˆเบ‡เบญเบฒเบ”เบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™เบฅเบฐเบšเบปเบšเบซเบผเบฒเบเปเบเบ™.

เบชเบณ เบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš เบเบฐเบเบฝเบก เบชเบฒเบ‚เบฒเบ‚เบฐเปœเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ‚เบญเบ‡ GCC, เป€เบŠเบดเปˆเบ‡เปƒเบซเป‰เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปƒเปเปˆ โ€œโ€”param=num-threads=Nโ€ เป€เบžเบทเปˆเบญเบเบณเบ™เบปเบ”เบˆเบณเบ™เบงเบ™เบ‚เบญเบ‡เบเบฐเบ—เบนเป‰. เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป‚เบญเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ interprocedural เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฐเบ—เบนเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เป€เบŠเบดเปˆเบ‡เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบฎเบญเบšเบงเบฝเบ™เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบซเบ™เป‰เบฒเบ—เบตเปˆเปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบ™เบฒเบ™เป„เบ”เป‰เบ‡เปˆเบฒเบ. เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ GIMPLE เบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบฎเบฒเบ”เปเบงเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบ—เบตเปˆเบ›เบฐเป€เบกเบตเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™เปเบกเปˆเบ™เบ–เบทเบเบˆเบฑเบ”เปƒเบชเปˆเปƒเบ™เบซเบปเบงเบ‚เปเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.

เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›, เบกเบฑเบ™เบเบฑเบ‡เบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบเป‰เบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš RTL interprocedural เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฐเบ—เบนเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เป‚เบ”เบเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบฎเบฒเบ”เปเบง. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš intraprocedural (IPA) เบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบฅเบฐเบซเบฑเบ”เบžเบฒเบเปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ, เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ—. เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบˆเปเบฒเบเบฑเบ”เบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปเบกเปˆเบ™เบ•เบปเบงเป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญ, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เป€เบžเบตเปˆเบกเบเบฒเบ™เบฅเบฑเบญเบเบ—เบปเปˆเบงเป‚เบฅเบเบ—เบตเปˆเบ›เบดเบ”เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบเบฒเบ™เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบฎเบนเบšเปเบšเบšเบซเบผเบฒเบเบเบฐเบ—เบนเป‰ (เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เป€เบ„เบทเปˆเบญเบ‡เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบˆเบฐเบ–เบทเบเบ”เบฑเบ”เปเบ›เบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบฒเบเบเบฐเบ—เบนเป‰เบ‚เบญเบ‡ GCC).

เป€เบžเบทเปˆเบญเบ›เบฐเป€เบกเบตเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เบŠเบธเบ”เบ—เบปเบ”เบชเบญเบšเป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบกเบ—เบตเปˆเบ›เบฐเบเบญเบšเป„เบŸเบฅเปŒ gimple-match.c, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบกเบตเบซเบผเบฒเบเบเบงเปˆเบฒ 100 เบžเบฑเบ™เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เปเบฅเบฐ 1700 เบŸเบฑเบ‡เบŠเบฑเบ™. เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบ™เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบกเบต CPU Intel Core i5-8250U เบ—เบตเปˆเบกเบต 4 เปเบเบ™เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเปเบฅเบฐ 8 virtual (Hyperthreading) เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบเบฒเบ™เบซเบผเบธเบ”เบฅเบปเบ‡เบ‚เบญเบ‡เป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ Intra Procedural GIMPLE เบˆเบฒเบ 7 เบซเบฒ 4 เบงเบดเบ™เบฒเบ—เบตเป€เบกเบทเปˆเบญเปเบฅเปˆเบ™ 2 thread เปเบฅเบฐเป€เบ›เบฑเบ™ 3 เบงเบดเบ™เบฒเบ—เบตเป€เบกเบทเปˆเบญเปเบฅเปˆเบ™ 4. เบเบฐเบ—เบนเป‰, i.e. เบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡เบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบ›เบฐเบเบญเบšเบ—เบตเปˆเบเปเบฒเบฅเบฑเบ‡เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเปเบกเปˆเบ™เบšเบฑเบ™เบฅเบธเป„เบ”เป‰ 1.72 เปเบฅเบฐ 2.52 เป€เบ—เบทเปˆเบญ, เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš. เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฑเบ‡เป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เปƒเบŠเป‰ virtual cores เบเบฑเบš Hyperthreading เบšเปเปˆเป„เบ”เป‰เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฑเบš GCC

เป€เบงเบฅเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป‚เบ”เบเบฅเบงเบกเบซเบผเบธเบ”เบฅเบปเบ‡เบ›เบฐเบกเบฒเบ™ 10%, เปเบ•เปˆเบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™, เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš RTL เบ‚เบฐเบซเบ™เบฒเบ™เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบšเบฑเบ™เบฅเบธเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ›เบฐเบกเบฒเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™ RTL, เป€เบงเบฅเบฒเบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡ 1.61 เป€เบ—เบทเปˆเบญ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เป€เบงเบฅเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบญเบตเบ 5-10% เป‚เบ”เบเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš IPA.

เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฑเบš GCC

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™