αž‚αž˜αŸ’αžšαŸ„αž„αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž‘αŸ… GCC

αž‡αžΆαž•αŸ’αž“αŸ‚αž€αž˜αž½αž™αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„αžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœ αž”αŸ‰αžΆαžšαŸ‰αžΆαž‘αŸ‚αž› GCC αž€αžΆαžšαž„αžΆαžšαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αž“αŸ’αžαŸ‚αž˜αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž˜αž½αž™αž‘αŸ… GCC αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αž‘αŸ…αž‡αžΆαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž”αŸ‰αžΆαžšαŸ‰αžΆαž‘αŸ‚αž›αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ‚αž›αž˜αŸ’αž’αž›αŸ’αž”αžΏαž“αž“αŸƒαž€αžΆαžšαž€αžŸαžΆαž„αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž–αž αž»αžŸαŸ’αž“αžΌαž› αž§αž”αž€αžšαžŽαŸαž”αž„αŸ’αž€αžΎαžαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ αžŠαŸ‚αž›αž“αžΈαž˜αž½αž™αŸ—αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαž€αžΌαžŠαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αŸ” αž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αž˜αžΈαž“αŸαŸ‡αž€αŸ†αž–αž»αž„αž–αž·αžŸαŸ„αž’αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž—αžΆαž–αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž“αŸ…αž€αž˜αŸ’αžšαž·αžαž…αž„αž€αŸ’αžšαž„ αžŠαŸ‚αž›αž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΆαž“αžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž–αž αž»αžŸαŸ’αž“αžΌαž›αŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ αžšαŸ€αž”αž…αŸ† αžŸαžΆαžαžΆαž”αŸ‰αžΆαžšαŸ‰αžΆαž‘αŸ‚αž›αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž“αŸƒ GCC αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžαŸ’αž˜αžΈ β€œβ€”param=num-threads=N” αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž…αŸ†αž“αž½αž“αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αŸ” αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž”αžΌαž„ αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž’αž“αŸ’αžαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž‘αŸ…αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž›αžΆαž™αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆαž‡αžΆαžšαž„αŸ’αžœαž„αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž»αžαž„αžΆαžšαž“αžΈαž˜αž½αž™αŸ— αž αžΎαž™αž’αžΆαž…αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ” αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš GIMPLE αžŠαŸ‚αž›αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαžŠαŸ„αž™αž―αž€αžšαžΆαž‡αŸ’αž™αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αžŠαŸ‚αž›αžœαžΆαž™αžαž˜αŸ’αž›αŸƒαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž“αŸƒαž˜αž»αžαž„αžΆαžšαž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αŸ”

αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αžœαžΆαž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž‚αŸ’αžšαŸ„αž„αž“αžΉαž„αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– RTL αž’αž“αŸ’αžαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ…αž‡αžΆαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ αžŠαŸ„αž™αž‚αž·αžαž‚αžΌαžšαž–αžΈαž›αž€αŸ’αžαžŽαŸˆαž“αŸƒαžœαŸαž‘αž·αž€αžΆαž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡ αž™αžΎαž„αž˜αžΆαž“αž‚αž˜αŸ’αžšαŸ„αž„αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž”αŸ‰αžΆαžšαŸ‰αžΆαž‘αŸ‚αž›αž“αŸƒαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– intraprocedural (IPA) αžŠαŸ‚αž›αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž…αŸ†αž–αŸ„αŸ‡αž€αžΌαžŠαžαžΆαž„αž€αŸ’αž“αž»αž„αž˜αž»αžαž„αžΆαžš αžŠαŸ„αž™αž˜αž·αž“αž‚αž·αžαž–αžΈαž›αž€αŸ’αžαžŽαŸˆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒαž€αžΆαžšαž αŸ…αž“αŸ„αŸ‡αž‘αŸαŸ” αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž€αŸ†αžŽαžαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡αž‚αžΊαž’αŸ’αž“αž€αž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžšαžΆαž˜ αžŠαŸ‚αž›αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„αž‡αžΆαžŸαž€αž›αžŠαŸ‚αž›αž”αž·αž‘αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžšαžΆαž˜αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž–αž αž»αžαŸ’αžŸαŸ‚ (αž“αŸ…αž–αŸαž›αž’αž“αžΆαž‚αž αž’αŸ’αž“αž€αž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžšαžΆαž˜αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž–αž αž»αžαŸ’αžŸαŸ‚αž“αŸƒ GCC) αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαžœαžΆαž™αžαž˜αŸ’αž›αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αžˆαž»αžαžŸαžΆαž€αž›αŸ’αž”αž„αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ†αžŠαŸ‚αž›αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž―αž€αžŸαžΆαžš gimple-match.c αžŠαŸ‚αž›αžšαž½αž˜αž˜αžΆαž“αž€αžΌαžŠαž‡αžΆαž„ 100 αž–αžΆαž“αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹ αž“αž·αž„αž˜αž»αžαž„αžΆαžš 1700 αŸ” αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸŠαžΈαž—αžΈαž™αžΌ Intel Core i5-8250U αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αž“αžΌαž›αžšαžΆαž„αž€αžΆαž™ 4 αž“αž·αž„ 8 αž“αž·αž˜αŸ’αž˜αž·αž (Hyperthreading) αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž€αžΆαžšαžαž™αž…αž»αŸ‡αž“αŸƒαž–αŸαž›αžœαŸαž›αžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸƒαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– GIMPLE Intra Procedural αž–αžΈ 7 αž‘αŸ… 4 αžœαž·αž“αžΆαž‘αžΈαž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš 2 αžαŸ’αžŸαŸ‚ αž“αž·αž„αž‘αŸ… 3 αžœαž·αž“αžΆαž‘αžΈαž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš 4 αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™, i.e. αž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž“αŸƒαž›αŸ’αž”αžΏαž“αž“αŸƒαžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž–αž·αž…αžΆαžšαžŽαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αžŠαŸ„αž™ 1.72 αž“αž·αž„ 2.52 αžŠαž„αžšαŸ€αž„αž‚αŸ’αž“αžΆαŸ” αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž€αŸαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž•αž„αžŠαŸ‚αžšαžαžΆαž€αžΆαžšαž”αŸ’αžšαžΎαžŸαŸ’αž“αžΌαž›αž“αž·αž˜αŸ’αž˜αž·αžαž‡αžΆαž˜αž½αž™ Hyperthreading αž˜αž·αž“αž“αžΆαŸ†αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž“αŸ„αŸ‡αž‘αŸαŸ”

αž‚αž˜αŸ’αžšαŸ„αž„αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž‘αŸ… GCC

αž–αŸαž›αžœαŸαž›αžΆαžŸαžΆαž„αžŸαž„αŸ‹αž‘αžΆαŸ†αž„αž˜αžΌαž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž”αŸ’αžšαž αŸ‚αž› 10% αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αŸ„αž„αž‘αŸ…αžαžΆαž˜αž€αžΆαžšαž–αŸ’αž™αžΆαž€αžšαžŽαŸ αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– RTL αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž“αžΉαž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαž›αž‘αŸ’αž’αž•αž›αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž‡αžΆαž„αž˜αž»αž“ αžŠαŸ„αž™αžŸαžΆαžšαžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž€αžΆαžšαž–αŸαž›αžœαŸαž›αžΆαž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž…αž„αž€αŸ’αžšαž„αŸ” αž”αŸ’αžšαž αŸ‚αž›αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž”αŸ‰αžΆαžšαŸ‰αžΆαž‘αŸ‚αž› RTL αž–αŸαž›αžœαŸαž›αžΆαž“αŸƒαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžŸαžšαž»αž”αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™ 1.61 αžŠαž„αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸαŸ‡ αžœαžΆαž“αžΉαž„αž’αžΆαž…αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž–αŸαž›αžœαŸαž›αžΆαžŸαžΆαž„αžŸαž„αŸ‹ 5-10% αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ„αž™αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– IPA αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαŸ”

αž‚αž˜αŸ’αžšαŸ„αž„αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž‘αŸ… GCC

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹