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

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. Π’ качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² конструктора Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅, Π° Π½Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… нСоднозначностСй объявлСний, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ проясняСт Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ вашСго ΠΊΠΎΠ΄Π° ΠΈ Ρ‚Π΅ΠΌ самым ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ сопровоТдСниС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, часто это просто бСзопаснСС (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 13 ΠΈ 31).

Бсылки

[Abelson96] β€’ [Bentley00] Β§4 β€’ [Cargill92] pp. 91-93 β€’ [Cline99] Β§3.05-06 β€’ [Constantine95] Β§29 β€’ [Keffer95] p. 17 β€’ [Lakos96] Β§9.1, Β§10.2.4 β€’ [McConnell93] β€’ [Meyers01] Β§47 β€’ [Stroustrup00] Β§1.7, Β§2.1, Β§6.2.3, Β§23.4.2, Β§23.4.3.2 β€’ [Sutter00] Β§40-41, Β§46 β€’ [Sutter04] Β§29

7. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ

РСзюмС

ВсСгда ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΌ ростС Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± асимптотичСской слоТности Π±Π΅Π· ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Алгоритмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ прСдсказуСмоС ΠΈ, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ Ρ…ΡƒΠΆΠ΅, Ρ‡Π΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ зависящСС ΠΎΡ‚ количСства ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹. Когда становится Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ оптимизация, Π² особСнности ΠΈΠ·-Π·Π° роста объСмов Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ слСдуСт ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ O-ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π° Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ микрооптимизациями Ρ‚ΠΈΠΏΠ° экономии Π½Π° ΠΎΠ΄Π½ΠΎΠΌ слоТСнии.

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

Π­Ρ‚Π° рСкомСндация ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ равновСсия ΠΌΠ΅ΠΆΠ΄Ρƒ рСкомСндациями 8 ΠΈ 9 β€” Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ Π½Π΅ пСссимизируйтС ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ΠΌ Π² написании, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π½ΠΎ истолкован ΠΊΠ°ΠΊ совСт ΠΎ "ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ". Π­Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ.

Π’ΠΎΡ‚ прСдпосылки для Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ. ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΈ дисковая Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ растут ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с 1988 ΠΏΠΎ 2004 Π³ΠΎΠ΄ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ дисков росла ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 112% Π² Π³ΠΎΠ΄ (ΠΏΠΎΡ‡Ρ‚ΠΈ Π² 1900 Ρ€Π°Π· Π·Π° дСсятилСтиС). ΠžΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ слСдствиСм этого Ρ„Π°ΠΊΡ‚Π° являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ любой ваш сСгодняшний ΠΊΠΎΠ΄ Π·Π°Π²Ρ‚Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ… β€” Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большими! ΠŸΠ»ΠΎΡ…ΠΎΠ΅ (Ρ…ΡƒΠΆΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ) асимптотичСскоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ поставит Π½Π° ΠΊΠΎΠ»Π΅Π½ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ ΠΌΠΎΡ‰Π½ΡƒΡŽ систСму, просто Π·Π°Π²Π°Π»ΠΈΠ² Π΅Π΅ достаточным количСством Π΄Π°Π½Π½Ρ‹Ρ….

Π—Π°Ρ‰ΠΈΡ‚Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ² Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ встраивания Π² наши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ станСт Π·Π°ΠΏΠ°Π΄Π½Π΅ΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, большими Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, с большим количСством пиксСлСй, большим количСством ΠΎΠΊΠΎΠ½, процСссов, Π±ΠΈΡ‚ΠΎΠ², пСрСсылаСмых ΠΏΠΎ ΠΊΠ°Π½Π°Π»Π°ΠΌ связи. Одним ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² успСха Ρ‚Π°ΠΊΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π‘++ обСспСчиваСт Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π½Π°Π΄ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ STL.

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

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

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

β€’ Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Π»ΠΎΠ²ΡƒΡˆΠΊΠ΅, ΠΊΠ°ΠΊ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌ (см., Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ 81).

β€’ ΠŸΠΎ возмоТности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ быстрыС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. Π˜Π΄Π΅Π°Π»ΡŒΠ½Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ с константной ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ push_back ΠΈΠ»ΠΈ поиск Π² Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π΅ (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 76 ΠΈ 80). НСплохи Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ O(log N), Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ set/map ΠΈ lower_bound ΠΈΠ»ΠΈ upper_bound с ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 76, 85 ΠΈ 86). Допустима линСйная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(N), ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρƒ vector::insert ΠΈΠ»ΠΈ for_each (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 76, 81 ΠΈ 84).

β€’ ΠŸΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ примСнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² с Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. НапримСр, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ слСдуСт Π·Π°Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ усилия Π½Π° поиск Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ O(N log N) ΠΈΠ»ΠΈ O(N) (Ссли таковая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ падСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ сущСствСнном ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ объСма Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ, ΠΈΠΌΠ΅Π½Π½ΠΎ Π² этом Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ основная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 81 совСтуСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌΠΈ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹) ΠΈΡ… копиям для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ элСмСнтами (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ΄Π½Π° линСйная опСрация Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ; см. ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 Π² Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ 81).

β€’ ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π΅ "ΠΏΡ€ΠΈΠΏΠ΅Ρ€Ρ‚Ρ‹ ΠΊ стСнС" ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π°. Π˜Ρ‰ΠΈΡ‚Π΅, Π½Π΅ ТалСя сил, Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΠ±Π΅Π³Π½ΡƒΡ‚ΡŒ ΠΊ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ, Π³Π΄Π΅ Π΄Π°ΠΆΠ΅ нСбольшоС ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сущСствСнному падСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΠΊΠ°ΠΆΡƒΡ‚, Ρ‡Ρ‚ΠΎ оптимизация Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½Π° ΠΈ Π²Π°ΠΆΠ½Π°, Π² особСнности ΠΏΡ€ΠΈ ростС Π΄Π°Π½Π½Ρ‹Ρ…, сконцСнтрируйтС усилия Π½Π° сниТСнии O-слоТности, Π° Π½Π΅ Π½Π° микрооптимизациях Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ экономии ΠΎΠ΄Π½ΠΎΠ³ΠΎ слоТСния.

Π˜Ρ‚Π°ΠΊ, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ (ΠΈΠ»ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅) Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² с Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ, ΠΈ ΡƒΠΆ Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ β€” ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ….

Бсылки

[Bentley00] Β§6, Β§8, Appendix 4 β€’ [Cormen01] β€’ [Kernighan99] Β§7 β€’ [Knuth97a] β€’ [Knuth97b] β€’ [Knuth98] β€’ [McConnell93) Β§5.1-4, Β§10.6 β€’ [Murray93] Β§9.11 β€’ [Sedgewick98] β€’ [Stroustrup00] Β§17.1.2

8. НС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ

РСзюмС

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

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

Π’ [Stroustrup00] Β§6 имССтся Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ†ΠΈΡ‚Π°Ρ‚Π°:

ΠŸΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ оптимизация β€” ΠΊΠΎΡ€Π΅Π½ΡŒ всСх Π±Π΅Π΄.

β€” Π”ΠΎΠ½Π°Π»ΡŒΠ΄ ΠšΠ½ΡƒΡ‚ (Donald Knuth) [Ρ†ΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π₯ΠΎΠ°Ρ€Π° (Hoare)]

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ.

β€” Ион Π‘Π΅Π½Ρ‚Π»ΠΈ (Jon Bentley)

Π₯ΠΎΠ°Ρ€ ΠΈ ΠšΠ½ΡƒΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΡ€Π°Π²Ρ‹ (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ 6 ΠΈ эту). Но ΠΏΡ€Π°Π² ΠΈ Π‘Π΅Π½Ρ‚Π»ΠΈ (рСкомСндация 9).

ΠœΡ‹ опрСдСляСм ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊ услоТнСниС Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ΄Π° (Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ) Π²ΠΎ имя ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΊΠΎΠ³Π΄Π° усилия Π½Π΅ ΠΎΠΏΡ€Π°Π²Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄ΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ измСрСниями ΠΈ сравнСниСм с поставлСнной Ρ†Π΅Π»ΡŒΡŽ). Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Ρ‚Π°ΠΊΠΈΠ΅ усилия Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ приводят ΠΊ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ВсСгда ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅:

Π“ΠΎΡ€Π°Π·Π΄ΠΎ, Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ быстрой, Ρ‡Π΅ΠΌ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ β€” ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ быстрым, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ максимально понятным ΠΈ ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ (рСкомСндация 6). Ясный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡ‰Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Ρ‚ΡŒ β€” ΠΈ ΠΏΡ€ΠΎΡ‰Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. УслоТнСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, всСгда ΠΌΠΎΠΆΠ½ΠΎ внСсти ΠΏΠΎΠ·ΠΆΠ΅ β€” ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ нСобходимости.

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