Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ программирования Π½Π° Π‘++. 101 ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈ рСкомСндация». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 7

Автор Π“Π΅Ρ€Π± Π‘Π°Ρ‚Ρ‚Π΅Ρ€

Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π²Π΅ основныС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎΡ‡Π΅ΠΌΡƒ прСТдСврСмСнная оптимизация Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ быстрСС. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, общСизвСстно, Ρ‡Ρ‚ΠΎ программисты ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ быстрСС ΠΈΠ»ΠΈ мСньшС ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ, ΠΈ Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ самоС ΡƒΠ·ΠΊΠΎΠ΅ мСсто Π² Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ ΠΊΠΎΠ΄Π΅. Π’ число Ρ‚Π°ΠΊΠΈΡ… программистов входят ΠΈ Π°Π²Ρ‚ΠΎΡ€Ρ‹ этой ΠΊΠ½ΠΈΠ³ΠΈ, ΠΈ Π²Ρ‹. ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ сами β€” соврСмСнныС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ слоТныС Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ с нСсколькими Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ процСссорами, Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, прСдсказаниСм вСтвлСния, ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌ- ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€, находящийся Π½Π°Π΄ всСм этим Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ обСспСчСниСм, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ваш исходный ΠΊΠΎΠ΄ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° собствСнном Π·Π½Π°Π½ΠΈΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния ΠΈ Π΅Π³ΠΎ особСнностСй, с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ этот ΠΊΠΎΠ΄ Π² максимальной стСпСни использовал всС возмоТности Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния. Над компилятором Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π²Ρ‹, с вашими прСдставлСниями ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΊΠΎΠ΄. Π£ вас практичСски Π½Π΅Ρ‚ шансов внСсти Ρ‚Π°ΠΊΡƒΡŽ ΠΌΠΈΠΊΡ€ΠΎΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, которая Π² состоянии сущСствСнно ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ компилятором ΠΊΠΎΠ΄Π°. Π˜Ρ‚Π°ΠΊ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ измСрСния, Π° измСрСниям Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ†Π΅Π»Π΅ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Пока Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ Π΄ΠΎΠΊΠ°Π·Π°Π½Π° β€” вашим ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ β„–1 Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ написаниС ΠΊΠΎΠ΄Π° для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. (Если ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ вас ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° β€” ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠΉΡ‚Π΅ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π² нСобходимости этого.)

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π² соврСмСнных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… всС большС ΠΈ большС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π½Π΅ процСссором, Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, диском ΠΈΠ»ΠΈ ΡΠ΅Ρ‚ΡŒΡŽ, ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ Web-сСрвиса ΠΈΠ»ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС оптимизация Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ быстрСС ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ программист зря Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ Π΄Ρ€Π°Π³ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ врСмя Π½Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π½ΡΡ‚ΡŒΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°.

Π‘Π°ΠΌΠΎ собой разумССтся, настанСт дСнь, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ придСтся Π·Π°Π½ΡΡ‚ΡŒΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ вашСго ΠΊΠΎΠ΄Π°. Когда Π²Ρ‹ Π·Π°ΠΉΠΌΠ΅Ρ‚Π΅ΡΡŒ этим β€” Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² (рСкомСндация 7) ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ класса, см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 5 ΠΈ 11), Ρ‡Π΅Ρ‚ΠΊΠΎ ΡƒΠΊΠ°Π·Π°Π² Π² коммСнтариях ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ссылку Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

ΠžΠ±Ρ‹Ρ‡Π½Π°Ρ ошибка Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΠΈΡˆΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‚ΠΎ β€” с Π³ΠΎΡ€Π΄ΠΎΡΡ‚ΡŒΡŽ! β€” стараСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ†Π΅Π½ΠΎΠΉ понятности. Π§Π°Ρ‰Π΅ всСго это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ милям "спагСтти" (говоря ΠΏΡ€ΠΎΡ‰Π΅ β€” ΠΊ "соплям" Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅), ΠΈ Π΄Π°ΠΆΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ становится ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ 6).

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ссылкС (рСкомСндация 25), использованиС прСфиксной Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ++ ΠΈ -- (рСкомСндация 28) ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΈΠ΄ΠΈΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ "ΡΡ‚Π΅ΠΊΠ°Ρ‚ΡŒ с ΠΊΠΎΠ½Ρ‡ΠΈΠΊΠΎΠ² Π²Π°ΡˆΠΈΡ… ΠΏΠ°Π»ΡŒΡ†Π΅Π²", ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ всСго лишь устранСниС ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСссимизации (рСкомСндация 9).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Π˜Ρ€ΠΎΠ½ΠΈΡ использования inline. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ дСмонстрация скрытой стоимости ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΈΠΊΡ€ΠΎΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€Ρ‹ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ (исслСдовав количСство Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ), ΠΊΠ°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ встраиваСмыми, Π½ΠΎ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ. Но Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€Ρ‹ Π½Π΅ Π² состоянии ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ встраиваСмыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ. ΠžΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ программисты ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ "встраиваниС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ" Π²ΠΎ имя ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда Π·Π° счСт большСй связности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ достигая Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС вСсьма ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². (Π‘ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ встраиваСмой Π΄ΠΎΠ»ΠΆΠ΅Π½ компилятор, Π° Π½Π΅ программист. Π‘ΠΌ. [Sutter00], [Sutter02] ΠΈ [Sutter04].)

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Когда Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΠΌ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄Π΅. Но Π΄Π°ΠΆΠ΅ Π°Π²Ρ‚ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΡ‹Ρ‚Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… прилоТСниях ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡ‚ΡŒ свой ΠΊΠΎΠ΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

Бсылки

[Bentley00] Β§6 β€’ [Cline99] Β§13.01-09 β€’ [Kernighan99] Β§7 β€’ [Lakos96] Β§9.1.14 β€’ [Meyers97] Β§33 β€’ [Murray93] Β§9.9-10, Β§9.13 β€’ [Stroustrup00] Β§6 introduction β€’ [Sutter00] Β§30, Β§46 β€’ [Sutter02] Β§12 β€’ [Sutter04] Β§25

9. НС пСссимизируйтС ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ

РСзюмС

Π’ΠΎ, Ρ‡Ρ‚ΠΎ просто для вас, β€” просто ΠΈ для ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ€Π°Π²Π½Ρ‹Ρ… условиях, Π² особСнности β€” слоТности ΠΈ удобочитаСмости ΠΊΠΎΠ΄Π°, ряд эффСктивных шаблонов проСктирования ΠΈ ΠΈΠ΄ΠΈΠΎΠΌ кодирования Π΄ΠΎΠ»ΠΆΠ½Ρ‹ СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ "ΡΡ‚Π΅ΠΊΠ°Ρ‚ΡŒ с ΠΊΠΎΠ½Ρ‡ΠΈΠΊΠΎΠ² Π²Π°ΡˆΠΈΡ… ΠΏΠ°Π»ΡŒΡ†Π΅Π²" ΠΈ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ слоТнСС Π² написании, Ρ‡Π΅ΠΌ ΠΈΡ… пСссимизированныС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹. Π­Ρ‚ΠΎ Π½Π΅ прСТдСврСмСнная оптимизация, Π° ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ излишнСй пСссимизации.

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

ИзбСТаниС ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ Π²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой сниТСния эффСктивности. Под ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСссимизациСй ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌ написаниС Ρ‚Π°ΠΊΠΈΡ… Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ нСэффСктивных Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠ°ΠΊ пСрСчислСнныС Π½ΠΈΠΆΠ΅.

β€’ ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ссылкС (рСкомСндация 25).

β€’ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ постфиксной вСрсии ++ Ρ‚Π°ΠΌ, Π³Π΄Π΅ с Ρ‚Π΅ΠΌ ΠΆΠ΅ успСхом ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ прСфиксной вСрсиСй (рСкомСндация 28).

β€’ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ присваивания Π² конструкторах вмСсто списка ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (рСкомСндация 48).

НС являСтся ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ сниТСниС количСства Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π² особСнности Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Ρ†ΠΈΠΊΠ»Π°Ρ…, Ссли это Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π°. Π’ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 18 поощряСтся максимально локальноС объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½ΠΎ Ρ‚Π°ΠΌ ΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΈ описаниС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ вынос ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρ‚Π°ΠΊΠΎΠ΅ дСйствиС Π½Π΅ услоТняСт ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ прСдназначСния ΠΊΠΎΠ΄Π°, Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ дСлаСтся Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ вычислСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΅Π³ΠΎ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ вмСсто написания явных Ρ†ΠΈΠΊΠ»ΠΎΠ² (рСкомСндация 84).

Π”Π²Π° Π²Π°ΠΆΠ½Ρ‹Ρ… способа ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ яснСС, ΠΈ эффСктивнСС β€” это использованиС абстракций (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 11 ΠΈ 36) ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (рСкомСндация 84). НапримСр, использованиС vector, list, map, find, sort ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… возмоТностСй стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, стандартизированных ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… экспСртами ΠΌΠΈΡ€ΠΎΠ²ΠΎΠ³ΠΎ класса, Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π΅Π»Π°ΡŽΡ‚ ваш ΠΊΠΎΠ΄ яснСС ΠΈ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΌ, Π½ΠΎ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΈ Π±ΠΎΠ»Π΅Π΅ быстрым.

ИзбСТаниС ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСссимизации становится особСнно Π²Π°ΠΆΠ½Ρ‹ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. ΠŸΡ€ΠΈ этом Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ контСкста использования вашСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π° поэтому Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΡƒΠΌΠ΅Ρ‚ΡŒ ΡΠ±Π°Π»Π°Π½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΡƒΡ€ΠΎΠΊΠΎΠ² Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 7 β€” слСдуСт ΠΊΡƒΠ΄Π° большС Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ, Ρ‡Π΅ΠΌ ΠΎ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹ΡˆΠ΅ ΠΏΠ°Ρ€Ρ‹ Ρ‚Π°ΠΊΡ‚ΠΎΠ² процСссора.

Бсылки

[Keffer95] pp. 12-13 β€’ [Stroustrup00] Β§6 introduction β€’ [Sutter00] Β§6

10. ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅

РСзюмС

БовмСстноС использованиС Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ споры ΠΈ Ρ€Π°Π·Π΄ΠΎΡ€Ρ‹. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ совмСстного использования Π΄Π°Π½Π½Ρ‹Ρ…, Π² особСнности Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. БовмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΡΠΈΠ»ΠΈΠ²Π°ΡŽΡ‚ ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сниТСнию сопровоТдаСмости, Π° Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Π­Ρ‚ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ носит Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€, Ρ‡Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ·ΠΊΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 18.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… со внСшним связываниСм Π² области видимости пространства ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… собой статичСскиС Ρ‡Π»Π΅Π½Ρ‹ классов. Π˜Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ услоТняСт Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ тСсной связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ (ΠΈ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅, ΠΎΡ‚Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ) частями ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. БовмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΌΠ΅Π½Π΅Π΅ эффСктивным тСстированиС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±Ρ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, обусловлСна историСй измСнСния этих Π΄Π°Π½Π½Ρ‹Ρ…, Π° ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, обуславливаСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ, ΠΏΠΎΠΊΠ° нСизвСстного, ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ·ΠΆΠ΅.

ИмСна ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² глобальном пространствС ΠΈΠΌΠ΅Π½ приводят ΠΊ Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π·Π°ΡΠΎΡ€Π΅Π½ΠΈΡŽ.

Если Π²Π°ΠΌ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² области видимости пространства ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ статичСских Ρ‡Π»Π΅Π½ΠΎΠ² классов, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΈΡ… ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ† компиляции Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, поэтому для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ (см. ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΡ‹Π΅ ссылки). ΠŸΡ€Π°Π²ΠΈΠ»Π° порядка ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ достаточно слоТны, поэтому Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡ… ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ; Π½ΠΎ Ссли Π²Ρ‹ всС ΠΆΠ΅ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ Π΄Π΅Π»ΠΎ, Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΡ… ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π²Π΅Π»ΠΈΡ‡Π°ΠΉΡˆΠ΅ΠΉ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, находящиСся Π² области видимости пространств ΠΈΠΌΠ΅Π½, статичСскиС Ρ‡Π»Π΅Π½Ρ‹ ΠΈΠ»ΠΈ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ процСссами, ΡΠ½ΠΈΠΆΠ°ΡŽΡ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ распараллСливания Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΈ многопроцСссорных срСдах, ΠΈ часто ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠ·ΠΊΠΈΠΌ мСстом с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ 7). Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ совмСстного использования Π΄Π°Π½Π½Ρ‹Ρ…; ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто Π½Π΅Π³ΠΎ срСдства ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСний).