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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ³Ρ€ для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 72

Автор Майкл ΠœΠΎΡ€Ρ€ΠΈΡΠΎΠ½

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Говоря ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ использовании ΠΈ ΡƒΠ±ΠΎΡ€ΠΊΠ΅ мусора, слСдуСт ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΎ послСднСм ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, связанном с ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· памяти. Π’ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ J2SE ΠΈΠ»ΠΈ J2EE Π²Ρ‹ создаСтС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ нСобходимости, Π° ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΎΠ½ΠΈ сборщиком мусора Java, ΠΊΠΎΠ³Π΄Π° становятся Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ. Π’ J2ME всС Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π½ΠΎ стандартный сборщик мусора – это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ эффСктивноС срСдство высвобоТдСния памяти. Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊ мусора Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΊΠ°ΠΊ Π½ΠΈΠ·ΠΊΠΎΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΉ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ΠΈ удаляСт Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ являСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ области видимости ΠΈΠ»ΠΈ Π½Π΅ станСт Ρ€Π°Π²Π½Ρ‹ΠΌ null.

Один ΠΈΠ· способов ΠΏΠΎΠΌΠΎΡ‡ΡŒ сборщику мусора ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ – это ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ явно ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null, Ρ‚ΠΎΠ³Π΄Π° занимаСмая ΠΏΠ°ΠΌΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ освобоТдСна ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΆΠ΅ возмоТности. ВсС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈΠ· памяти, ΠΎΠ΄Π½Π°ΠΊΠΎ этот ΠΏΡ€ΠΈΠ΅ΠΌ позволяСт ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² сборщиком мусора.

ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ сСтСвых Π΄Π°Π½Π½Ρ‹Ρ…

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

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ

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

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ High Seas, созданный Π² Π³Π»Π°Π²Π°Ρ… 12 ΠΈ 13. Π’ этой ΠΈΠ³Ρ€Π΅ спрайт пиратского корабля состоит ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² (рис. 17.1), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат изобраТСния корабля, ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ³ΠΎ Π½Π° сСвСр, восток, юг ΠΈ Π·Π°ΠΏΠ°Π΄. Π­Ρ‚ΠΈ полоТСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ спрайтового изобраТСния Π½Π° 90 0, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ примСнСния всСх ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ возмоТности класса Sprite (рис. 17.2).

Рис. 17.1. Π‘ΠΏΡ€Π°ΠΉΡ‚ пиратского корабля ΠΈΠ· ΠΈΠ³Ρ€Ρ‹ High Seas состоит ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… спрайтов

Рис. 17.2. ВсС изобраТСния, ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹, Π½ΠΎ динамичСски восстановлСны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ

...

Π’ ΠΊΠΎΠΏΠΈΠ»ΠΊΡƒ Π˜Π³Ρ€ΠΎΠΊΠ°

ИспользованиС прСобразования спрайтов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° рСалистичности Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… элСмСнтов Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈΠ³Ρ€Ρ‹. НапримСр, пиратский ΠΊΠΎΡ€Π°Π±Π»ΡŒ Π² ΠΈΠ³Ρ€Π΅ High Seas 2 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΈΡ†Π΅Π²ΡƒΡŽ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ стороны паруса, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅Π½ΡŒ, ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Π΅ΠΌΡƒΡŽ ΠΊΠΎΡ€Π°Π±Π»Π΅ΠΌ. Π₯отя эти Π΄Π΅Ρ‚Π°Π»ΠΈ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΎΠ½ΠΈ Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ (рис. 17.2). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ пиратский ΠΊΠΎΡ€Π°Π±Π»ΡŒ выглядит ΠΌΠ΅Π½Π΅Π΅ рСалистично.

Основной нСдостаток использования ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ спрайтов – сниТСниС скорости ΠΏΡ€ΠΈ сниТСнии Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ спрайт, трСбуСтся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ просто вывСсти Π΅Π³ΠΎ Π½Π° экран, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈ этом Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π΅Π½.

ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Java-ΠΊΠΎΠ΄Π°

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

Π’Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ скорости ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π° создаваСмого Π²Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°. НСкоторыС части ΠΊΠΎΠ΄Π° Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‡Π°Ρ‰Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ…. Зная это, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ³Ρ€Ρ‹. Π’Π°ΡˆΠ° Ρ†Π΅Π»ΡŒ – ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π½Π΅ прикладывая ΠΌΠ½ΠΎΠ³ΠΎ усилий. Π§ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

...

Π‘ΠΎΠ²Π΅Ρ‚ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ

НС Π΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎ скорости ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΈΠ³Ρ€Π° Π½Π΅ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»Π°. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ…ΠΈΡ‚Ρ€Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, слоТныС для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, всСгда слСдуСт Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ врСмя Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π±Π΅Π· ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, самая простая оптимизация Π½Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ программирования Π²ΠΎΠΎΠ±Ρ‰Π΅. Π― Π³ΠΎΠ²ΠΎΡ€ΡŽ ΠΎΠ± ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² состав классов ΠΏΡ€ΠΈ использовании стандартного компилятора (javac). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Java-компилятор Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² классы Ρ„Π°ΠΉΠ»ΠΎΠ², которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°ΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄. По ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΠ³Ρ€Ρ‹ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² компиляторС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ»ΡŽΡ‡ – g: none. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования этого ΠΊΠ»ΡŽΡ‡Π°:

javac -g:none MyMIDlet.java

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² этой ΠΊΠ½ΠΈΠ³Π΅, располоТСнныС Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дискС, ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ с Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ. Π’Π°ΠΌ придСтся ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ – g: none, Ссли Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… вычислСний

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ – это простой ΠΏΡ€ΠΈΠ΅ΠΌ программирования, ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ вычислСния. Π’Π°ΠΊΠΈΠ΅ вычислСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ врСмя процСссора. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ вычислСния:

for (int i = 0; i < size(); i++) a = (b + c)/i;

НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ слоТСниС (b + c) β€“ это вСсьма эффСктивный Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, Π»ΡƒΡ‡ΡˆΠ΅ вынСсти Π΅Π³ΠΎ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†ΠΈΠΊΠ»Π°:

int tmp = b + c;

for (int i = 0; i < size(); i++)

a = tmp/i;

Π’Π°ΠΊΠΎΠ΅ простоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ эффСкт, Π² зависимости ΠΎΡ‚ числа ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠ² выполнСния Ρ†ΠΈΠΊΠ»Π°. Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠ΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹, вСроятно, ΠΌΠΎΠ³Π»ΠΈ ΡƒΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° size(). Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅ Ρ†ΠΈΠΊΠ»Π°:

int s = size();

int tmp = b + c;

for (int i = 0; i < s; i++)

a = tmp/i;

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Говоря ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, рассмотрим Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, которая сниТаСт ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния ΠΊΠΎΠ΄Π°: ΠΎΠ±Ρ‰ΠΈΠ΅ выраТСния. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ выраТСния Π² ΠΊΠΎΠ΄Π΅, Π½Π΅ осознавая послСдствий. Π’ Ρ€Π°Π·Π³Π°Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ, вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

b = Math.abs(a) * c; d = e / (Math.abs(a) + b);

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° abs() β€“ трудоСмкая опСрация, вмСсто этого Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

int tmp = Math.abs(a);

b = tmp * c;

d = e / (tmp + b);

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ, Π½ΠΎ Java-ΠΊΠΎΠ΄Ρƒ трСбуСтся большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ класса, Ρ‡Π΅ΠΌ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ осущСствляСтся доступ ΠΊ Π΄Π²ΡƒΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π° Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса, Ссли вопрос ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½. НапримСр, Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° происходит постоянноС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ класса, Ρ‚ΠΎ цСлСсообразно ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ класса ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

for (int i = 0; i < 1000; i++) a = obj.b * i;

Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° obj выполняСтся 1000 Ρ€Π°Π·. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ этого ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ obj.b локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π² Ρ†ΠΈΠΊΠ»Π΅:

int localb = obj.b;

for (int i = 0; i < 1000; i++)

a = localb * i;

РаскрытиС Ρ†ΠΈΠΊΠ»ΠΎΠ²

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹ΠΉ Β«Π»ΠΎΠ±ΠΎΠ²ΠΎΠΉΒ» ΠΏΡ€ΠΈΠ΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ извСстСн ΠΊΠ°ΠΊ раскрытиС Ρ†ΠΈΠΊΠ»ΠΎΠ², Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ использованиС Ρ†ΠΈΠΊΠ»ΠΎΠ². Π”Π°ΠΆΠ΅ простой Ρ†ΠΈΠΊΠ»-счСтчик ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ процСссор опСрациями сравнСния ΠΈ инкрСмСнтирования. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅Π²Π°ΠΆΠ½Ρ‹ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΈΠ³Ρ€Π°Ρ… Π²Π°ΠΆΠ΅Π½ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

РаскрытиС Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ Π·Π°ΠΌΠ΅Π½Ρƒ Β«Π³Ρ€ΡƒΠ±Ρ‹ΠΌΒ» эквивалСнтом. Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ это, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

for (int i = 0; i < 1000; i++) a[i] = 25;

Π­Ρ‚ΠΎ, вСроятно, выглядит ΠΊΠ°ΠΊ эффСктивный Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, ΠΈ Π½Π° самом Π΄Π΅Π»Π΅ это Ρ‚Π°ΠΊ. Но Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ раскройтС Ρ†ΠΈΠΊΠ»:

int i = 0;

for (int j = 0; j < 100; j++) {

a[i++] = 25;

a[i++] = 25;

a[i++] = 25;

a[i++] = 25;

a[i++] = 25;

a[i++] = 25;

a[i++] = 25;

a[i++] = 25;

a[i++] = 25;

a[i++] = 25;

}

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

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΈ Π·Π°Ρ‚Π΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°