Π Π°Π·Π½ΠΎΠ΅

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π°: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² компиляторах. Π§Π°ΡΡ‚ΡŒ 1 / Π₯Π°Π±Ρ€

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° | Techrocks

Π—Π°Ρ‡Π΅ΠΌ ΠΆΠ΅ Π½ΡƒΠΆΠ½Π° оптимизация ΠΈ ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½Π° взялась? Π‘ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π½Π΅ΠΉ развития эры Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π²ΠΎΠ·Π½ΠΈΠΊ вопрос экономии мСста ΠΈ увСличСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слоТныС дССспособныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ смогли Π±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π½ΠΈΠ·ΠΊΠΎΠΌ быстродСйствии процСссоров, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ считанныС ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ мСста Π½Π° дискС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ПО Π±Ρ‹Π»ΠΈ заинтСрСсованы Π² максимальном быстродСйствии ΠΏΡ€ΠΈ минимальном Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π°.

БСгодня эти мощности Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΡƒΠ»Ρ‹Π±ΠΊΡƒ. Но Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ. Как извСстно, сколько Π½ΠΈ Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ диска ΠΈ объСм ΠžΠ—Π£, всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°Π»ΠΎ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ написанныС Β«Π½Π΅Ρ€ΡΡˆΠ»ΠΈΠ²ΠΎΒ» прилоТСния, ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ ΠΈ рСсурсоСмкиС, ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΡƒΡŽ Π±ΠΎΡ€ΡŒΠ±Ρƒ Π°Π½Π°Π»ΠΎΠ³Π°ΠΌ, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ красивы ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹.

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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ стоит Π½Π° Ρ‚Ρ€Π΅Ρ… Β«ΠΊΠΈΡ‚Π°Ρ…Β» β€” Π΅ΡΡ‚Π΅ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ врСмя. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚.

  1. Π•ΡΡ‚Π΅ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ. Код Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΌ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ СстСствСнно Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Код Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ возмоТности Π±Π΅Π· нСобходимости Π²Π½ΠΎΡΠΈΡ‚ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ измСнСния Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
  2. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΡƒΠ΄Π°Ρ‡Π½ΠΎ оптимизированная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ быстродСйствиС ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π½Π° 20-30% Π² сравнСниС с исходным Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ.
  3. ВрСмя. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ нСбольшой ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ сроки, Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ 10 – 15 % Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° написаниС самого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. Π˜Π½Π°Ρ‡Π΅ это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Ρ€Π΅Π½Ρ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎ.

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ совСт. ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ копию исходного ΠΊΠΎΠ΄Π°. Π’ΠΎΠ³Π΄Π° Π² случаС ошибки ΠΏΡ€ΠΈ внСсСнии ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ всСгда ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ откатится Π΄ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ вСрсии.

Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ АссСмблСр

МногиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ искрСннС ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ критичСскиС сСкции (Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡ… Β«ΡƒΠ·ΠΊΠΈΠΌΠΈΒ» мСстами ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) ΠΊΠΎΠ΄Π° ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° ассСмблСрС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ обСспСчиваСт самый быстрый доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ устройствам.

ΠœΠ½ΠΎΠ³ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ сравнСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° языкС высокого уровня ΠΈ примСнСния ассСмблСрных вставок ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС послС компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ использовании ассСмблСра. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ эти Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ΡΡ ΠΎΡ‚ 2% Π΄ΠΎ 7%. ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ – Ρ€Π°Π·Π½ΠΈΡ†Π° составляСт 20%. Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ Ρ€Π°Π΄ΠΈ получСния ΡΡ‚ΠΎΠ»ΡŒ ΠΌΠ°Π»ΠΎΠ³ΠΎ эффСкта Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя ΠΈ силы Π½Π° написаниС ассСмблСрной вСрсии? На наш взгляд Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ большС внимания Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ написан Π½Π° ЯП высокого уровня, ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, ΠΊΠ°ΠΊ проводится оптимизация, ΠΈ разбСрСмся, с Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ, Ρ‡Π΅Π³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ, ΠΈ ΠΊΠΎΠ³Π΄Π° Π±Π΅Π· ассСмблСра Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ.

Начало ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ Β«ΡƒΠ·ΠΊΠΈΠ΅ мСста» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НСт смысла Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ кусок ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π³Π΄Π΅ ΠΈ Π±Π΅Π· вас всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ прСкрасно. Π—Π΄Π΅ΡΡŒ Π²Ρ‹ вряд Π»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ‹ΠΈΠ³Ρ€Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ рСгулярно ΠΈΠ»ΠΈ часто ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ – Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Если ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ†ΠΈΠΊΠ»Π° хотя Π±Ρ‹ Π½Π° 2% Π·Π° ΠΎΠ΄Π½Ρƒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ, Π° число Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ 1000 Ρ€Π°Π·, Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ: 2% Γ— 1000 = 2000%, Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΊΠΎΠ΄Π°.

Участки ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ

НС стоит Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ½ΠΈ ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ ΠΈ Ρ‚ΠΎΠ»ΠΊΡƒ Π² ΠΈΡ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ. Они ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΈ большС ΠΊ этому ΠΊΠΎΠ΄Ρƒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Но ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ внСсСнии ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²Ρ‹ Π΄ΠΎΠ±ΡŒΠ΅Ρ‚Π΅ΡΡŒ увСличСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° 10%, это Π½Π΅ лишСно смысла. Π—Π΄Π΅ΡΡŒ всС зависит ΠΎΡ‚ вашСго Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла ΠΈ ΠΎΠΏΡ‹Ρ‚Π°.

Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ Π½Π΅ сумССтС Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ достойных Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π² случаС обращСния ΠΊ внСшним устройствам ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ систСмам. Π”ΠΎ ΠΈ послС Ρ‚Π°ΠΊΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ. Но Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ взаимодСйствия с внСшними Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π»ΡƒΡ‡ΡˆΠ΅ прСдусмотритС Π·Π°Π³Π»ΡƒΡˆΠΊΡƒ Ρ‚ΠΈΠΏΠ° Β«ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅, опСрация ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ нСсколько ΠΌΠΈΠ½ΡƒΡ‚Β».

Π•Ρ‰Π΅ Ρ€Π°Π· ΠΎΠ± ассСмблСрС

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ЯП Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. НСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ Π³Π΄Π΅ Π½ΠΈ попадя, это Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ повлияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Ссли Π²Ρ‹ – асс ассСмблСра ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ быстро, ΠΊΠ°ΠΊ ΠΈ Π½Π° ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ языкС высокого уровня, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠΌ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ. ΠŸΡ€Π°Π²Π΄Π°, Ρ‚ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ нюанс – Π²Ρ‹ услоТняСтС Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° для программистов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ послС вас.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚?

Если Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ смоТСтС ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΡ€ΠΈ этом тСстированиС Π½Π΅ выявляСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ всС ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ€ΡƒΡŽ ΠΌΡƒΠ΄Ρ€ΠΎΡΡ‚ΡŒ программистов: Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ – Π½Π΅ мСшай.

Π˜Π½Π°Ρ‡Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ лишнСС врСмя Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΊΠΎΠ΄ΠΎΠΌ, Π° Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ сдСлаСтС Π΄Π°ΠΆΠ΅ Ρ…ΡƒΠΆΠ΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Ρ‡Π½Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π΄Π° ΠΈ ΠΎΡ‚ Π±Π°Π³ΠΎΠ² Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ застрахован.

Π—Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ слСдуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΆΠ°Π»ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π»ΠΈΠ±ΠΎ Π½Π° этапС тСстирования находятся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ участки, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° «подвисаСт» ΠΈ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ устройства. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях производится ΠΎΡ‚Π»Π°Π΄ΠΊΠ°, Π° для ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π² ΡΠ΅Ρ€ΠΈΡŽ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π²Ρ‹ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ вСрсии ΠΈΠ»ΠΈ, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅, Β«Π·Π°ΠΏΠ»Π°Ρ‚ΠΊΠΈΒ» (patch).

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π΅ слишком отличаСтся ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ исправлСния Π±Π°Π³ΠΎΠ². Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, с ΠΈΡ… устранСния ΠΈ начинаСтся Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

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

ΠŸΠΈΡˆΠΈΡ‚Π΅ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎ коммСнтариях. Π’Π°ΠΊ Π²Ρ‹ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈ сСбС, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½ΡƒΠΆΠ½ΠΎ, Π° Ρ‡Ρ‚ΠΎ – ΡƒΠΆΠ΅ Π½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ. Π­Ρ‚ΠΈ ΠΎΠ±Ρ‰ΠΈΠ΅ совСты ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅, ΠΈ ΠΏΡ€ΠΈ поискС Π±Π°Π³ΠΎΠ². Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π½Π΅ Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π½Π΅Ρ€ΡΡˆΠ»ΠΈΠ²Ρ‹ΠΌ Β«Π³ΠΎΠ²Π½ΠΎΠΊΠΎΠ΄Π΅Ρ€ΠΎΠΌΒ», ΠΈ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстро ΠΈ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ этап поиска ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… мСст Ρ‚Π°ΠΊΠΆΠ΅ простой. Π Π°Π·Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ всСго, Π² ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ подвисаСт. Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ ошибок ΠΈΠ»ΠΈ излишнС слоТных Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅.

Если всС Ρ€Π°Π²Π½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Β«Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚Β», придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°, Π² Ρ‚ΠΎΠΌ числС, с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ записи Π»ΠΎΠ³ΠΎΠ² всСх запросов SQL, Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ случаС поиска Π²ΡΠ»Π΅ΠΏΡƒΡŽ Π²Ρ‹ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π½Π΅ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ смоТСтС Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

Рассмотрим самыС популярныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. НСкоторыС ΠΈΠ· Π½ΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·ΠΎΠ²ΡƒΡ‚ Ρƒ вас Π½Π΅Π΄ΠΎΡƒΠΌΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΏΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚.

Настройка окруТСния

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠΈ SQL ΠΈΠ»ΠΈ другая систСма управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π½ΠΎ настроСны. Настройки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ Π·Π°ΠΌΠ΅Π΄Π»ΡΡŽΡ‚ процСсс.

Иногда удаСтся Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ настройки Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Java. ΠšΡΡ‚Π°Ρ‚ΠΈ, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ быстрСС Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСстируСмого прилоТСния, Π½ΠΎ ΠΈ всСй систСмы.

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° саму ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму ΠΈ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ Β«ΠΆΠ΅Π»Π΅Π·Π°Β». ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ½ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ? А, ΠΌΠΎΠΆΠ΅Ρ‚, устарСли ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ «тормозят»?

ВсС это Π½Π΅ относится Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ΄ΠΎΠΌ. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ «досадныС ΠΌΠ΅Π»ΠΎΡ‡ΠΈΒ» Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π° ΠΊΠΎΠ΄ – Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΈΡ‡Π΅ΠΌ. И Π½Π΅ стоит ΡΠ½ΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»Ρ‹Π±Π°Ρ‚ΡŒΡΡ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ.

ИзбавляСмся ΠΎΡ‚ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°

Для увСличСния скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ сокращСния Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Часто Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° автоматичСски Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½Ρ‹Π΅ ΠΈΠ»ΠΈ ΡƒΠΆΠ΅ Π½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. НапримСр, Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊ, описывая Π·Π°Π΄Π°Ρ‡Ρƒ программисту, попросил ΠΎ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ возмоТностях, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄ΡƒΠΌΠ°Π». Или Π²Ρ‹ΡˆΠ΅Π» Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π³Π΄Π΅ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π° старый ΠΊΠΎΠ΄ просто Π·Π°Π±Ρ‹Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ.

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

ΠœΠ΅ΠΌΠΎΠΈΠ·Π°Ρ†ΠΈΡ

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

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ это ΠΎΡ‡Π΅Π½ΡŒ просто. ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ функция Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, провСряСтся условиС – исполнялась Π»ΠΈ ΠΎΠ½Π° Ρ€Π°Π½Π΅Π΅. По ΠΈΡ‚ΠΎΠ³Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°:

  • функция Π²Ρ‹Π·Π²Π°Π½Π° Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½Π° выполняСтся, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сохраняСтся;
  • ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΡƒΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π», ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сохранСнный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Иногда говорят ΠΎ Ρ‚Π°Π±ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, это синоним ΠΌΠ΅ΠΌΠΎΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках программирования.

ΠšΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π­Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти устройства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ‚Π°ΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС, Ρ‡Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ сСрвСру ΠΈΠ»ΠΈ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с сайтами, ΠΎΠ½Π»Π°ΠΉΠ½-систСмами ΠΈ Ρ‚.Π΄.

Вся нСобходимая информация Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π½Π° носитСлях с быстрым доступом. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ выдСлСнная Ρ‡Π°ΡΡ‚ΡŒ диска ΠΈΠ»ΠΈ опСративная ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ кэш ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости, ΠΈ обращаСтся ΠΊ основному Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΡ… Π² кэшС.

РаспараллСливаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

Π­Ρ‚ΠΎ способ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм с ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это относится ΠΊ многопроцСссорным систСмам.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΡ‹ здСсь Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π·Π°ΠΉΠΌΠ΅Ρ‚ слишком ΠΌΠ½ΠΎΠ³ΠΎ мСста. ΠšΡ€Π°Ρ‚ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ: Ρ€Π°Π·Π½Ρ‹Π΅ вычислСния ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС языки, Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‚ΡƒΡ‚ Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ внСшниС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ систСмы ΠΈΠ»ΠΈ ассСмблСр.

Β«Π›Π΅Π½ΠΈΠ²Ρ‹Π΅Β» вычислСния

Π›Π΅Π½ΠΈΠ²Ρ‹Π΅ (Lazy evaluation) ΠΈΠ»ΠΈ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ вычислСния – стратСгия, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСмах счислСния. Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС расчСты ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

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

ΠœΠ΅Ρ‚ΠΎΠ΄ приблиТСния

ΠŸΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ аппроксимаация (ΠΎΡ‚ Π»Π°Ρ‚. proxima β€” блиТайшая ΠΈΠ»ΠΈ приблиТС́ниС) – ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°ΠΌΠ΅Π½Ρ‹ строгого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящиС ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½Ρ‹Π΅ значСния, Ρ‡Ρ‚ΠΎ Π²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΡ‚Π΅Ρ€ΡŽ точности вычислСний. Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ точности экономит ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Π½ΡƒΡŽ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ float’ами. Но ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ остороТно, Π½Π΅ всСгда сниТСниС точности допустимо.

ИспользованиС сторонних языков

Иногда написанная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° описанных Ρ‚ΠΈΠΏΠΎΠ², Ρ‡Ρ‚ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого эффСкта, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, написанныС Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках. Но Π΄Π΅Π»Π°Ρ‚ΡŒ это Π½ΡƒΠΆΠ½ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ остороТно. ВсС эти «лишниС» ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‚ вас ΠΎΡ‚ Π±Π°Π³ΠΎΠ² ΠΈ Β«Π΄Ρ‹Ρ€Β» Π² бСзопасности, связанных, Π² Ρ‚ΠΎΠΌ числС, с Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ экономия Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡΡ‚ΠΎΠ»ΡŒ сущСствСнна? И Ссли ΠΏΡ€ΠΈΠ΄Π΅Ρ‚Π΅ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ здСсь это – Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄ΠΈΡ‚Π΅ особо Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ тСстированиС.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ эффСкт Β«Π·ΠΎΠΎΠΏΠ°Ρ€ΠΊΠ°Β», Ρ‡Ρ‚ΠΎ сильно сниТаСт Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ попросту Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ критичСски Π½Π°Π²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

БущСствуСт Π΅Ρ‰Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ общСизвСстных, Ρ‚Π°ΠΊ ΠΈ Π»ΠΈΡ‡Π½Ρ‹Ρ… Π½Π°Ρ…ΠΎΠ΄ΠΎΠΊ программистов. ΠœΡ‹ ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ оптимизация, ΠΈ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ вас с самыми популярными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. А ΠΊΠ°ΠΊ Π²Ρ‹ ускоряСтС Ρ€Π°Π±ΠΎΡ‚Ρƒ своих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ? Π”Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Π² коммСнтариях.

10 слов ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° β€” Β«Π₯Π°ΠΊΠ΅Ρ€Β»

НСмного ΠΎ грустном: вся наша Тизнь – это Π±ΠΎΡ€ΡŒΠ±Π° с Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π°ΠΌΠΈ. И Π²Π΅Ρ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚. НСобходимо ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всё – начиная ΠΎΡ‚ своСго Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ мСста Π΄ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΡ€ΠΈΠ²Ρ‘Π» ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° языкС программирования Delphi, Π½ΠΎ ΠΏΠΎΠ²Π΅Ρ€ΡŒ, эти совСты ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚Π΅Π±Π΅ ΠΈ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, Ссли ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ.

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

2. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ всСгда Π½Π°Π΄ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ со слабых мСст Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈ Ρ‚Π°ΠΊ быстро Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, нСобходимости Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. Π”Π° ΠΈ эффСкт Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½.

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

4. Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ помСньшС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вычислСния с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой. Π›ΡŽΠ±Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π° порядок быстрСС. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ умноТСния ΠΈΠ»ΠΈ дСлСния Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ достаточно Π΄ΠΎΠ»Π³ΠΎ. ВмСсто умноТСния Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ слоТСниС, Π° Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сдвигом. Π‘Π΄Π²ΠΈΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС ΠΈ умноТСния, ΠΈ дСлСния. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ всС числа хранятся Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС. Если пСрСвСсти число ΠΈΠ· дСсятичной систСмы счислСния Π² Π΄Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ ΠΈ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ число Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ данная опСрация Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° дСлСнию Π½Π° 2. ΠŸΡ€ΠΈ сдвигС Π²Π»Π΅Π²ΠΎ происходит Π΄Π΅Π»Π΅Π½ΠΈΠ΅ числа Π½Π° 2. Π₯ΠΎΡ‚ΡŒ эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹, Π½ΠΎ сдвиг Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² нСсколько Ρ€Π°Π· быстрСС.

5. ΠŸΡ€ΠΈ создании ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Π½Π΅ Π½Π°Π΄ΠΎ ΠΎΠ±Ρ€Π΅ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… большим количСством Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². А всё ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π΅Ρ‘ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄Ρ‹ΠΌΠ°ΡŽΡ‚ΡΡ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, стСк, Π° послС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ·Ρ‹ΠΌΠ°ΡŽΡ‚ΡΡ ΠΎΡ‚Ρ‚ΡƒΠ΄Π°. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ ΠΈ с самими ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. НС Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, содСрТащиС Π΄Π°Π½Π½Ρ‹Π΅ большого ΠΎΠ±ΡŠΡ‘ΠΌΠ° Π² чистом Π²ΠΈΠ΄Π΅. Π›ΡƒΡ‡ΡˆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ адрСс ячСйки памяти, Π³Π΄Π΅ хранятся Π΄Π°Π½Π½Ρ‹Π΅, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΡƒΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с этим адрСсом.Β 

6. Π’ самых критичСских ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° экран, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ языком Assembler. Π”Π°ΠΆΠ΅ встроСнный Π² Delphi ассСмблСр Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС Ρ€ΠΎΠ΄Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка. Код ассСмблСра ΠΌΠΎΠΆΠ½ΠΎ вынСсти Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

7. Π›ΠΈΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚. НС Π½Π°Π΄ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Ρƒ вас Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° какая-Ρ‚ΠΎ нСстандартная ситуация, Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΈ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ВсСгда Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π΅ доТидаясь, ΠΊΠΎΠ³Π΄Π° эти Π΄Π°Π½Π½Ρ‹Π΅ понадобятся.

8. Если Ρ‚Ρ‹ пишСшь достаточно Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΈ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, добавляй Π² Π½Π΅Ρ‘ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΈΡ… всё Ρ€Π°Π²Π½ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚. И Ссли Π²Π΄Ρ€ΡƒΠ³ Ρ‚Π΅Π±Π΅ захочСтся ΠΏΡ€ΠΎΠ΄Π°Ρ‚ΡŒ исходныС ΠΊΠΎΠ΄Ρ‹ своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ повысят ΠΈΠΌ Ρ†Π΅Π½Ρƒ, Π΄Π° ΠΈ самому Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³Ρ‡Π΅ Π² Π½ΠΈΡ… ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

9. Для достиТСния Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ эффСкта Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ IDE, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, языка, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΡˆΡŒ, Π² нашСм случаС Delphi. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² опциях IDE Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ компиляторов, Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ стоит самый простой, быстро ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ, Π½ΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всСгда ΡΡ‚Π°Π²ΡŒ самый ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄ компилятора.

10. Бтарайся Π΄Π΅Π»Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… стандартный интСрфСйс. Ну Π½Π΅ Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΠΈ, нСстандартныС мСню ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ графичСскиС Π½Π°Π²ΠΎΡ€ΠΎΡ‚Ρ‹. Всё это ΠΎΡ‡Π΅Π½ΡŒ сильно Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, расходуСт большоС количСство рСсурсов ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, настоящий UNIX – это Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ shell – строка для Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄.

Π’ΠΎΡ‚ Π²Ρ€ΠΎΠ΄Π΅ ΠΈ всё. Π–Π΅Π»Π°ΡŽ, ΡƒΠ΄Π°Ρ‡ΠΈ Π² написании своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, просто слСдуй этим совСтам, ΠΈ всё Ρƒ тСбя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ.

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ сайта, оптимизация ΠΊΠΎΠ΄Π° / Π₯Π°Π±Ρ€

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ сайта Π² сСти ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ΅ мСроприятиС послС создания Π²Π΅Π± сайта. Π­Ρ‚ΠΈ мСроприятия производятся с Ρ†Π΅Π»ΡŒΡŽ привлСчСния посСтитСлСй Π½Π° Π’Π°Ρˆ рСсурс. БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² продвиТСния сайта. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ описано ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ страницы сайта для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ продвиТСния Π’Π°ΡˆΠ΅Π³ΠΎ рСсурса Π² сСти ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚.

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎ влиянии скорости Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сайта, я описывал ΠΊΠ°ΠΊ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сайта влияСт Π½Π° Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ страницы поисковыми систСмами. Π’ цСлях ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ продвиТСния, Π²Π°ΠΆΠ½ΠΎ максимально ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ вСс страниц сайта. Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ объСма ΠΊΠΎΠ΄Π° страницы, ΠΊΠ°ΠΊ Π³Π»Π°Π²Π½ΠΎΠΉ страницы сайта, Ρ‚Π°ΠΊ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ….

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π°

ВсС поисковыС систСмы ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° количСство ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Π½Π° страницС ΠΈ количСству ΠΊΠΎΠ΄Π°. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° (ΡΡ‚Π°Ρ‚ΡŒΠΈ) ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΊΠΎΠ΄Π° всСй страницы.

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π½Π΅ сущСствуСт, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ сущСствуСт Π½ΠΎ Π΅Π³ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚, Π½ΠΎ извСстно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Ρ‡Π΅ΠΌ мСньшС ΠΊΠΎΠ΄Π° Π½Π° страницС, Π° большС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ тСкста Π½Π° страницС Ρ‚Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ ваша страница Π±ΡƒΠ΄Π΅Ρ‚ Π’Ρ‹ΡˆΠ΅ Π² Π²Ρ‹Π΄Π°Ρ‡Π΅ поисковой систСмы, Ρ‡Π΅ΠΌ страницы вашСго ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π°.

Одним ΠΈΠ· Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² ранТирования поисковой систСмы Google, являСтся ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страниц сайта, Ρ‡Π΅ΠΌ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сайта ΠΈΠ»ΠΈ страницы большС, Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅. Π’Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ попадания Π² Ρ‚ΠΎΠΏ увСличиваСтся.

УмСньшив вСс страницы, ΡƒΠ±Ρ€Π°Π² лишниС скрипты, ΡƒΠ±Π΅Ρ€Π΅Ρ‚Π΅ лишниС html сроки Π½Π° страницС, Π²Ρ‹ сдСлаСтС ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг ΠΊ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡŽ.

ΠœΠ΅Ρ‚Π° – Ρ‚Π΅Π³ΠΈ страницы сайта

ПослС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° страницы, добавлСния Π½Π° Π½Π΅Ρ‘ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Π°-Ρ‚Π΅Π³ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницы сайта. Π­Ρ‚ΠΈ Ρ‚Π΅Π³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΈ Ρ‚Π΅Π³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° страницС. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих Ρ‚Π΅Π³ΠΎΠ² поисковыС систСмы находят Π½ΡƒΠΆΠ½Ρ‹Π΅ страницы ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΊΠ°ΠΊΡƒΡŽ страницы Π²Ρ‹Π΄Π°Ρ‚ΡŒ послС поискового запроса.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚Π° – Ρ‚Π΅Π³ΠΈ

  • Title – Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ страницы;
  • Description – описаниС страницы;
  • Keywords – ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова для страницы.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Π² ΠΌΠ΅Ρ‚Π°-Ρ‚Π΅Π³ΠΈ Π²Ρ‹ сообщитС поисковику ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ вашСм сайта, ΠΈΠ»ΠΈ ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ страницС вашСго рСсурса. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² SEO ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ сайта Π² поисковых систСмах.

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ h2-h6

Π’Π΅Π³ΠΈ h2-h6 ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ тСкста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ располагаСтся послС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ участки тСкста. Π‘Π°ΠΌΡ‹ΠΌ Π²Π°ΠΆΠ½Ρ‹ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ являСтся Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ h2, ΠΎΠ½ считаСтся Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня, соотвСтствСнно ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ Ρƒ Π½Π΅Π³ самыС большиС.

Им Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π½Π° страницС. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅Π³ΠΈ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ порядку ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ Ρ‚Π΅Π³Π°ΠΌΠΈ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π΅Π³ΠΈ h2, h3, h4.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Ρ‹, Ρ‡Ρ‚ΠΎ для продвиТСния сайта Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколько простых мСроприятий.

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ сайта. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π°:

  • УмСньшСниС объСма ΠΊΠΎΠ΄Π°
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°-Ρ‚Π΅Π³ΠΎΠ² ΠΊ страницС
  • НаписаниС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² h2-H6
  • НаписаниС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² title ΠΈ alt ΠΊ изобраТСниям
  • ΠŸΠ΅Ρ€Π΅Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ° страниц сайта (ΠΏΠ΅Ρ€Π΅Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ°)
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ΄Π° Π½Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ

УскорСниС ΠΊΠΎΠ΄Π° Π½Π° Python срСдствами самого языка / Π₯Π°Π±Ρ€

Каким Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π½Π΅ Π±Ρ‹Π» Python, Π΅ΡΡ‚ΡŒ Ρƒ Π½Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° извСстная всС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ β€” ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. На эту Ρ‚Π΅ΠΌΡƒ Π±Ρ‹Π»ΠΎ написано мноТСство статСй, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π½Π° Π₯Π°Π±Ρ€Π΅.


Π§Π°Ρ‰Π΅ всСго, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Psyco
  • ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Python C Extensions
  • Π‘ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠΎΠ·Π³ΠΈΠ°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ

БСзусловно, Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π²Π΅Ρ€Π½Ρ‹Π΅. Но Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ свои нСдостатки.
Psyco β€” прСкрасный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‰ΠΈΠΉ ускорСния ΠΊΠΎΠ΄Π° Π² сотни ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ², Π½ΠΎ: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ лишь 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Python вСрсий Π½Π΅ Π²Ρ‹ΡˆΠ΅ 2.6, большоС ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти ΠΈ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π² послСднСС врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° psyco сбавила Ρ‚Π΅ΠΌΠΏΡ‹, послСднСС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° сайтС Π΄Π°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ 16.07.2010. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Psyco v2 ситуация измСнится, Π½ΠΎ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ, этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π½Π΅ всСгда.
Python C Extensions (Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ rushman ПишСм ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для ΠŸΠΈΡ‚ΠΎΠ½Π° Π½Π° C) β€” создатСли Python’a сдСлали всСм Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌ этот язык, Π½Π΅ΠΎΡ†Π΅Π½ΠΈΠΌΡ‹ΠΉ ΠΏΠΎΠ΄Π°Ρ€ΠΎΠΊ β€” Python/Π‘ API, Π΄Π°ΡŽΡ‰ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π½Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π‘ΠΈ-шного ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Python’e. НСдостатков Ρƒ этого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π°:

  1. Β«ΠŸΠΎΡ€ΠΎΠ³ вхоТдСния» Ρƒ C ΠΈ Python/C API всС ΠΆΠ΅ Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ Ρƒ Β«Π³ΠΎΠ»ΠΎΠ³ΠΎΒ» Python’a, Ρ‡Ρ‚ΠΎ отсСкаСт эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… с C
  2. Одной ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… особСнностСй Python являСтся ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. НаписаниС части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘ΠΈ сниТаСт Π΅Π΅, ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ части пСрСписанного Π² Π‘ΠΈ ΠΊΠΎΠ΄Π° ΠΊ всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π½Π΅ всСм.
Π‘ΠΌΠ΅Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π½Π΅ всСгда, часты ситуации, Ρ‡Ρ‚ΠΎ ΠΈ самый быстрый Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π²Ρ‹Π΄Π°Π΅Ρ‚ Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎ скорости.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ?

Π’ΠΎΠ³Π΄Π°, Ссли для вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ‹ΡˆΠ΅ пСрСчислСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ подошли, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ? ΠœΠ΅Π½ΡΡ‚ΡŒ Python Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ язык? НСт, ΡΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ нСльзя. Π‘ΡƒΠ΄Π΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сам ΠΊΠΎΠ΄. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ взяты ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, строящСй мноТСство ΠœΠ°Π½Π΄Π΅Π»ΡŒΠ±Ρ€ΠΎΡ‚Π° Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ числом ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ.

ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ исходной вСрсии ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… 600*600 пиксСлСй, 100 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ составляло 3.07 сСк, эту Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ ΠΌΡ‹ возьмСм Π·Π° 100%

Π‘ΠΊΠ°ΠΆΡƒ Π·Π°Ρ€Π°Π½Π΅Π΅, Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ станСт ΠΌΠ΅Π½Π΅Π΅ pythonic, Π΄Π° простят мСня Π°Π΄Π΅ΠΏΡ‚Ρ‹ python-way.

Π¨Π°Π³ 0. Вынос основного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ

Π”Π°Π½Π½Ρ‹ΠΉ шаг ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ python Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎ запускС, Π΄Π° ΠΈ ΠΏΡ€ΠΈ использовании psyco Π΄Π°Π½Π½Ρ‹ΠΉ шаг ΠΌΠΎΠΆΠ΅Ρ‚ сильно ΠΏΠΎΠΌΠΎΡ‡ΡŒ, Ρ‚.ΠΊ. psyco ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ лишь Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ затрагивая основноС Ρ‚Π΅Π»ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
Если Ρ€Π°Π½ΡŒΡˆΠ΅ рассчСтная Ρ‡Π°ΡΡ‚ΡŒ исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выглядСла Ρ‚Π°ΠΊ:

for Y in xrange(height):
        for X in xrange(width):
                #ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° вхоТдСния Ρ‚ΠΎΡ‡ΠΊΠΈ (X,Y) Π² мноТСство ΠœΠ°Π½Π΄Π΅Π»ΡŒΠ±Ρ€ΠΎΡ‚Π°, itt ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ 

Π’ΠΎ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Π΅Ρ‘ Π½Π°:

def mandelbrot(height, itt, width):
    for Y in xrange(height):
        for X in xrange(width):
             #ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° вхоТдСния Ρ‚ΠΎΡ‡ΠΊΠΈ (X,Y) Π² мноТСство ΠœΠ°Π½Π΄Π΅Π»ΡŒΠ±Ρ€ΠΎΡ‚Π°, itt ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ 
mandelbrot(height, itt, width)

ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ врСмя 2.4 сСк, Ρ‚.Π΅. 78% ΠΎΡ‚ исходного.

Π¨Π°Π³ 1. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python’a, это просто ΠΊΠ»ΠΎΠ½Π΄Π°ΠΉΠΊ ΠΏΠΎΠ»Π΅Π·Π½Π΅ΠΉΡˆΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. БСйчас нас интСрСсуСт ΠΌΠΎΠ΄ΡƒΠ»ΡŒ cProfile, благодаря ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° становится простым ΠΈ, Π΄Π°ΠΆΠ΅, интСрСсным занятиСм.
ΠŸΠΎΠ»Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ этому ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь, Π½Π°ΠΌ ΠΆΠ΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚ ΠΏΠ°Ρ€Ρ‹ простых ΠΊΠΎΠΌΠ°Π½Π΄.

python -m cProfile sample.py
ΠšΠ»ΡŽΡ‡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠ΅Ρ‚Π°Ρ‚ΠΎΡ€Π° -m позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ссли сам ΠΌΠΎΠ΄ΡƒΠ»ΡŒ прСдоставляСт Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ «профиля» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π²ΠΈΠ΄Π°
4613944 function calls (4613943 primitive calls) in 2.818 seconds

Ordered by: internal time

ncalls tottime percall cumtime percall filename:lineno(function)

1 2.309 2.309 2.766 2.766 mand_slow.py:22(mandelbrot)



Π‘ Π΅Ρ‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ, Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ мСста, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (строки с наибольшими значСниями ncalls (ΠΊΠΎΠ»-Π²ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ), tottime ΠΈ percall (врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСх Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ соотвСтствСнно)).

Для удобства ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ -s time, отсортировав Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния.

Π’ ΠΌΠΎΠ΅ΠΌ случаС интСрСсной Ρ‡Π°ΡΡ‚ΡŒΡŽ Π²Ρ‹Π²ΠΎΠ΄Π° Π±Ρ‹Π»ΠΎ (врСмя Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ отличаСтся ΠΎΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅, Ρ‚.ΠΊ. ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ добавляСт свой Β«ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄Β»):
4613944 function calls (4613943 primitive calls) in 2.818 seconds

Ordered by: internal time

ncalls tottime percall cumtime percall filename:lineno(function)

1 2.309 2.309 2.766 2.766 mand_slow.py:22(mandelbrot)

3533224 0.296 0.000 0.296 0.000 {abs}

360000 0.081 0.000 0.081 0.000 {math.atan2}

360000 0.044 0.000 0.044 0.000 {math.cos}

360000 0.036 0.000 0.036 0.000 {math.sqrt}



Π˜Ρ‚Π°ΠΊ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ займСмся ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π²ΠΏΠ»ΠΎΡ‚Π½ΡƒΡŽ.

Π¨Π°Π³ 2. Анализ профиля

Π’ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ мСстС ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ стоит наша основная функция mandelbrot, Π·Π° Π½Π΅ΠΉ ΠΈΠ΄Π΅Ρ‚ систСмная функция abs, Π·Π° Π½Π΅ΠΉ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· модуля math, Π΄Π°Π»Π΅Π΅ β€” ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ, ΠΎΠ½ΠΈ Π½Π°ΠΌ Π½Π΅ интСрСсны.

Π˜Ρ‚Π°ΠΊ, систСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Β«Π²Ρ‹Π»ΠΈΠ·Π°Π½Ρ‹Π΅Β» сообщСством, Π½Π°ΠΌ врядли удастся ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ собствСнному ΠΊΠΎΠ΄Ρƒ:

Π¨Π°Π³ 3. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°

БСйчас, ΠΊΠΎΠ΄ выглядит Ρ‚Π°ΠΊ:

pix = img.load() #Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ массив пиксСлСй
def mandelbrot(height, itt, width):
    step_x = (2 - width / 1.29) / (width / 2.6) - (1 - width / 1.29) / (width / 2.6) #шаг ΠΏΠΎ оси Ρ… 
    for Y in xrange(height):
        y = (Y - height / 2) / (width / 2.6) #для Y рассчСт шага Π½Π΅ Ρ‚Π°ΠΊ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ ΠΊΠ°ΠΊ для Π₯, Π΅Π³ΠΎ отсутствиС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ повлияСт Π½Π° Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ
        x = - (width / 1.29) / (width / 2.6)
        for X in xrange(width):
            x += step_x
            z = complex(x, y)

            phi = math.atan2(y, x - 0.25)
            p = math.sqrt((x - 0.25) ** 2 + y ** 2)
            pc = 0.5 - 0.5 * math.cos(phi)

            if p <= pc: #Ссли Π»Π΅ΠΆΠΈΡ‚ Π² области ΠΊΠ°Ρ€Π΄ΠΈΠΎΠΈΠ΄Ρ‹ - ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅ΠΌ
                pix[X, Y] = (255, 255, 255)
                continue

            Z_i = 0j
            for i in xrange(itt): #ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° "Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ бСсконСчности"
                Z_i = Z_i ** 2 + z
                if abs(Z_i) > 2:
                    color = (i * 255) // itt
                    pix[X, Y] = (color, color, color)
                    break
            else:
                pix[X, Y] = (255, 255, 255)
        print("\r%d/%d" % (Y, height)),

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ возвСдСния Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ** β€” довольно Β«ΠΎΠ±Ρ‰ΠΈΠΉΒ», Π½Π°ΠΌ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ лишь Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ, Ρ‚.Π΅. всС конструкции Π²ΠΈΠ΄Π° x**2 ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° Ρ…*Ρ…, Π²Ρ‹ΠΈΠ³Ρ€Π°Π² Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΅Ρ‰Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° врСмя:
1.9 сСк, ΠΈΠ»ΠΈ 62% ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, достигнуто простой Π·Π°ΠΌΠ΅Π½ΠΎΠΉ Π΄Π²ΡƒΡ… строк:

p = math.sqrt((x - 0.25) ** 2 + y ** 2)
...
Z_i = Z_i **2 + z

Π½Π°:

p = math.sqrt((x - 0.25) * (x - 0.25) + y * y)
...
Z_i = Z_i * Z_i + z
Π¨Π°ΠΆΠΊΠΈ 5, 6 ΠΈ 7. МалСнькиС, Π½ΠΎ Π²Π°ΠΆΠ½Ρ‹Π΅

ΠŸΡ€ΠΎΠΏΠΈΡΠ½Π°Ρ истина, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π½Π°ΡŽΡ‚ всС программисты Π½Π° Python β€” Ρ€Π°Π±ΠΎΡ‚Π° с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Но часто забываСтся Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ это Π²Π΅Ρ€Π½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½ΠΎ ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ ΠΊΠΎΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ΄ΡƒΡ‚ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· модуля math. Π’Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ? Π‘Π΄Π΅Π»Π°Π½ΠΎ:

def mandelbrot(height, itt, width):
    from math import atan2, cos, sqrt
    pix = img.load() #Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ массив пиксСлСй

Π•Ρ‰Π΅ 0.1сСк ΠΎΡ‚Π²ΠΎΠ΅Π²Π°Π½ΠΎ.
Вспомним, Ρ‡Ρ‚ΠΎ abs(x) Π²Π΅Ρ€Π½Π΅Ρ‚ число Ρ‚ΠΈΠΏΠ° float. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ стоит с float Π° Π½Π΅ int:

if abs(Z_i) > 2:  ------> if abs(Z_i) > 2.0: 

Π•Ρ‰Π΅ 0.15сСк. 53% ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, грязный Ρ…Π°ΠΊ.

Π’ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ этой Π·Π°Π΄Π°Ρ‡Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ниТняя ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° изобраТСния, Ρ€Π°Π²Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ, Ρ‚.ΠΎ. число вычислСний ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π΄Π²ΠΎΠ΅, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Π² ΠΈΡ‚ΠΎΠ³Π΅ 0.84сСк ΠΈΠ»ΠΈ 27% ΠΎΡ‚ исходного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ timeit. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅. Python β€” ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π½Π΅ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ, ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π²Π°ΡˆΠ΅ΠΌΡƒ ТСланию Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΈ всС ΠΎΡ‚ΠΏΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:)
ЦСль Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π° счСт ΠΌΠ΅Π»ΠΊΠΈΡ… ΠΈ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… измСнСния, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½ ** Π½Π° *, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ змСя ΠΏΠΎΠ»Π·Π°Ρ‚ΡŒ Π΄ΠΎ Π΄Π²ΡƒΡ… Ρ€Π°Π· быстрСС, Π±Π΅Π· примСнСния тяТСлой Π°Ρ€Ρ‚ΠΈΠ»Π»Π΅Ρ€ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ Π‘ΠΈ, ΠΈΠ»ΠΈ ΡˆΠ°ΠΌΠ°Π½ΡΡ‚Π² psyco.
Π’Π°ΠΊΠΆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ срСдства, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ psyco, Ρ…ΡƒΠΆΠ΅ Π½Π΅ станСт:)

Бпасибо всСм ΠΊΡ‚ΠΎ Π΄ΠΎΡ‡ΠΈΡ‚Π°Π» Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°, Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄ Π²Ρ‹ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ ваши мнСния ΠΈ замСчания Π² коммСнтариях!

UPD ΠŸΠΎΠ»Π΅Π·Π½ΡƒΡŽ ссылку Π² комСнтариях ΠΏΡ€ΠΈΠ²Π΅Π» funca.

ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ объСма ΠΊΠΎΠ΄Π°, CSS ΠΈ HTML ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹, валидация

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ HTML ΠΈ каскадныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй (CSS) Π½ΡƒΠΆΠ½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ процСсс Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сайта ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° Π½Π΅ΠΌ. Экономия Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, Π² Ρ†Π΅Π»ΠΎΠΌ, спустя Π΄ΠΎΠ»Π³ΠΈΠΉ срок послС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, получится сущСствСнной, Π΄Π°ΠΆΠ΅ Ссли внСшнС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ скорости Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ HTML-ΠΊΠΎΠ΄Π°

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ HTML-ΠΊΠΎΠ΄ способствовал быстрой Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ сайта, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСскольким условиям:

  • Π‘Ρ‹Ρ‚ΡŒ простым ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ² Π΅Π³ΠΎ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ошибки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±ΠΎΡ‚Π°ΠΌ Π±Ρ‹Π»ΠΎ Π»Π΅Π³Ρ‡Π΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ. Код Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ структуру страницы.
  • ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ страниц, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π±Π»ΠΎΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΈ быстро опрСдСляСмы.
  • ОсвобоТдСниС ΠΊΠΎΠ΄Π° ΠΎΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… свСдСний, вынСсСниС ΠΈΡ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ вынСсти CSS ΠΈ JS), повысит ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π±ΠΎΡ‚ΠΎΠ².

Π”ΠΎΠ±ΠΈΠ²ΡˆΠΈΡΡŒ выполнСния этих условий, сайт ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ быстрым, ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ индСксации Π΅Π³ΠΎ Π±ΠΎΡ‚Π°ΠΌΠΈ поисковых систСм.

УмСньшСниС объСма ΠΊΠΎΠ΄Π° ΠΈ оптимизация CSS

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ сайта ΠΏΡ€ΠΎΡ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ, ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ² Π΅Π³ΠΎ объСм. Для этого Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ„Π»Π΅Ρˆ-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, JavaScript, Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ², тСкста, прСдставлСнного ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΎΠΉ. ВсС элСмСнты, ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, слСдуСт ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ…, Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, CSS ΠΈ JS, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅). ΠŸΠΎΠΌΠΎΠ³ΡƒΡ‚ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ Autoptimize, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ HTML, CSS, JS (Ссли ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π³Π°Π»ΠΎΡ‡ΠΊΠΈ). НСобходимо Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΡƒΡŽ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΡŽ ΠΏΠΎ сайту, которая Π±ΡƒΠ΄Π΅Ρ‚ понятна ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ распознаваСма поисковиками. Π­Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, качСство Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ индСксации сайта.

Π§Ρ‚ΠΎ касаСтся ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ CSS, Ρ‚ΠΎ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ Π΄ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ рСсурсу ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Ручная оптимизация – Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ошибки. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ»ΠΈ сСрвис для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ качСствСннСС устранят нСдостатки, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π° сайтС, ΠΈ послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, поэтому ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

НСкоторыС способы ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ структуру CSS Π² Ρ€ΡƒΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅:

  • Π£Π΄Π°Π»ΠΈΡ‚ΡŒ лишниС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ Ρ€Π°Π·Ρ€Ρ‹Π²Ρ‹ строк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ Ρ„Π°ΠΉΠ» CSS ΠΈ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ²;
  • ΠŸΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ свойства вмСсто нСсколько Ρ€Π°Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄;
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹Π΅, понятныС описания Π² коммСнтариях;
  • НСобычныС ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ стилСй, Π° Π½Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ;
  • Для ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ alt ΠΈ title (Ρ€Π°Π·Π½Ρ‹Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ изобраТСния), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… содСрТаниС Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π»ΠΎΡΡŒ Π±ΠΎΡ‚Π°ΠΌΠΈ поисковых систСм;
  • ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌ инструмСнты h2 – ΠΈ Π΄Π°Π»Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΈ индСксации;
  • ΠŸΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² keywords Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° страницС, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… количСство;
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚Π°-Ρ‚Π΅Π³ΠΈ.

CSS ΠΈ HTML ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹

Π£Π΄ΠΎΠ±Π½ΠΎ ΠΈ быстро ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ нСпосрСдствСнно Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСрвисов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • CleanCSS.com;
  • CSS Optimizer;
  • CSS Compressor;
  • CY-PR.com;
  • ΠΏΠ»Π°Π³ΠΈΠ½ Autoptimize.

БпСциалисты Π² SΠ•Πž ΠΈ IT ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ CleanCSS.com, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сТатия ΠΎΡ‚ Π½ΠΈΠ·ΠΊΠΎΠΉ Π΄ΠΎ Π²Ρ‹ΡΠΎΡ‡Π°ΠΉΡˆΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ настройки. ПослС высокого ΠΈ Π²Ρ‹ΡΠΎΡ‡Π°ΠΉΡˆΠ΅Π³ΠΎ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄ сайта ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ практичСски Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ Π²ΠΈΠ΄, ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ измСнСния Π±ΡƒΠ΄Π΅Ρ‚ практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для Π½Π°Ρ‡Π°Π»Π° слСдуСт Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ стандартной ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. МоТно Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌΡ‹ сТатия ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΈΠ»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: сТатиС ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ².

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

На рСсурсС CY-PR.com Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ инструмСнт для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ структуру CSS Π½Π° 25-30%, Π½ΠΎ здСсь Π½Π΅Ρ‚ возмоТности ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с ΠΊΠΎΠ΄ΠΎΠΌ послС выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ сСрвисы достаточно Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° сайтС пСрСстанут Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ с ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… сайта.

ПослС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ сайта, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π°, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. ΠΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ считаСтся ситуация, ΠΊΠΎΠ³Π΄Π° страницы ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ сайта Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 3-5 сСкунд.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ, насколько эффСктивно Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ прописан HTML-ΠΊΠΎΠ΄, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌΠΈ сСрвисами, ΠΊΠ°ΠΊ:

  • optimization.com;
  • ΠŸΠΎΡ€Ρ‚Π°Π» seo-чСклист;
  • ΠΏΠ»Π°Π³ΠΈΠ½ Firebug.

Π­Ρ‚ΠΈ инструмСнты ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, всС Π»ΠΈ сдСлано для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ объСма HTML-ΠΊΠΎΠ΄Π° ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π΅Π³ΠΎ структуры. На рСсурсС SEO-чСклист ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΏΠΎ списку, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сдСлано для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° Ρ‡Ρ‚ΠΎ – Π΅Ρ‰Π΅ Π½Π΅Ρ‚, ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΡƒ Π½Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄Π΅Π»Π°Ρ….

Валидация

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ сайта Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибок ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ сСрвисов ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ – Π²Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€ΠΎΠ². ЭффСктивная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ΄Π° осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ validator.w3c.org

Если систСма ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ выдаст Π±ΠΎΠ»Π΅Π΅ полутысячи ошибок, Π½Π΅ стоит Ρ€Π°ΡΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ. ПослС исправлСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡ‡Π΅Ρ‚Π°, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ снова ΠΈ ошибок станСт Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ мСньшС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ нСдостаток Π²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈ Π΅Π³ΠΎ исправлСнии ΠΎΠ½ΠΈ исчСзнут.

Π‘Π°ΠΉΡ‚ с исправлСнным ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠΌΠ΅Π΅Ρ‚ большС шансов Π½Π° высокиС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² Π²Ρ‹Π΄Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ рСсурс с ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ HTML-ΠΊΠΎΠ΄ΠΎΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ошибки.

Руководство ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° — Π§Π°ΡΡ‚ΡŒ 1

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ознакомлСния с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм
Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π² Ρ‚Π΅ΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Для этого Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

Как
ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг, я Π²Ρ‹Π±Ρ€Π°Π» простой
ΠΏΠΎΠ½ΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ я ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ» Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

Π—Π°Π΄Π°Ρ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠΌ, — это Π·Π°Π΄Π°Ρ‡Π° 3n + 1 (подробности): для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ числа n ΠΎΡ‚ 1 Π΄ΠΎ 1000000 ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

, ΠΏΠΎΠΊΠ° число Π½Π΅ станСт 1, считая количСство Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ примСняли Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Π­Ρ‚ΠΎ
Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ для всСх чисСл ΠΎΡ‚ 1 Π΄ΠΎ 1000000. НСт Π²Π²ΠΎΠ΄Π°
Π½ΠΎΠΌΠ΅Ρ€ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° распСчатаСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚,
Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт врСмя выполнСния (Π² миллисСкундах), Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для вычислСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

ВСстовая машина Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ характСристиками: AMD Athlon 2 P340 Dual Core 2,20 Π“Π“Ρ†, 4 Π“Π‘ ΠžΠ—Π£, Windows 7 Ultimate x64.

Π―Π·Ρ‹ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: C # ΠΈ C ++ (Visual Studio 2010).

НСобходимыС условия

Н / Π”

Π”Ρ€ΡƒΠ³ΠΎΠΉ
Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ вСрсия Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ числа ΠΎΡ‚ 1 Π΄ΠΎ 1000000 ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²Ρ‹ΡˆΠ΅
упомянутый Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, гСнСрируя ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чисСл Π΄ΠΎ n
становится 1.Π‘ΡƒΠ΄ΡƒΡ‚ засчитаны шаги, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для достиТСния 1.
ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ максимальноС количСство шагов.

Код C ++:

 для (int i = nFirstNumber; i  nMaxCycleCount)
    {
        nMaxCycleCount = nCurrentCycleCount;
    }
} 

Код C #:

 для (int i = FirstNumber; i  MaxCycleCount)
    {
        MaxCycleCount = iCurrentCycleCount;
    }
} 

Π― скомпилировал ΠΊΠΎΠ΄ для сборок ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ выпуска, ΠΊΠ°ΠΊ 32-разрядной, Ρ‚Π°ΠΊ ΠΈ 64-разрядной вСрсии.Π—Π°Ρ‚Π΅ΠΌ я запускал ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ» 100 Ρ€Π°Π· ΠΈ вычислял срСднСС врСмя (мс), Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для выполнСния вычислСний.

Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

C ++ Debug C ++ Release C # Debug C # Release
x86 вСрсия 6882.91 6374.50 6358.4109 x64 вСрсия 1020,78 812,71 1890.36 742,28

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Π½Π° Ρ‡Ρ‚ΠΎ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ
32-Π±ΠΈΡ‚Π½Ρ‹Π΅ вСрсии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² 5-7 Ρ€Π°Π· ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ вСрсии.
Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… x64 ΠΎΠ΄ΠΈΠ½ рСгистр ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° long, Π° Π½Π° x86 Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ 2 рСгистра. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° x86 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ значСниями Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Из-Π·Π° этого ΠΌΡ‹ большС Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ 32 Π±ΠΈΡ‚Π° Π² этом
ΡΡ‚Π°Ρ‚ΡŒΡ.

Π’Ρ‚ΠΎΡ€ΠΎΠ΅, Π½Π° Ρ‡Ρ‚ΠΎ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, это Ρ€Π°Π·Π½ΠΈΡ†Π°
ΠΌΠ΅ΠΆΠ΄Ρƒ сборками Release ΠΈ Debug, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Ρ‚ΠΎ для C # различия Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π²
большС, Ρ‡Π΅ΠΌ для C ++.

Π”Ρ€ΡƒΠ³ΠΎΠΉ
наблюдСниС — это Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиСй C # Release ΠΈ C ++ Release
вСрсия. Π­Ρ‚ΠΎ вмСстС с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ наблюдСниСм заставляСт мСня Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ
ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C # выполняСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ компилятор C ++ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ
ΠΏΠΎΠ·ΠΆΠ΅).

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π±ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ, связаны с Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ матСматичСских
быстрСС, Π·Π°ΠΌΠ΅Π½ΠΈΠ² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ способ ΠΈΡ… выполнСния Π½Π°
нСстандартный способ.

Если
ΠΌΡ‹ смотрим Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ ΠΈ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас всСго 3 слоТных матСматичСских
ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: опСрация ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ 2 (%),
ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° 3 (*) ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° 2 (/).

ΠŸΠ΅Ρ€Π²Π°Ρ опСрация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽ, — это ΠΌΠΎΠ΄ΡƒΠ»ΡŒ 2.
ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ всС числа прСдставлСны Π² памяти ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΠΈΡ‚ΠΎΠ². ΠΌΡ‹
Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ прСдставлСниС Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ³ΠΎ числа всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ послСдний Π±ΠΈΡ‚ 1 (5
= 101, 13 = 1101 ΠΈ Ρ‚. Π”.), И прСдставлСниС Ρ‡Π΅Ρ‚Π½ΠΎΠ³ΠΎ числа всСгда Π±ΡƒΠ΄Π΅Ρ‚
ΠΈΠΌΠ΅Π΅Ρ‚ послСдний Π±ΠΈΡ‚ 0 (6 = 110, 22 = 10110).Π˜Ρ‚Π°ΠΊ, Ссли ΠΌΡ‹ смоТСм ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ послСднюю Ρ‡Π°ΡΡ‚ΡŒ
number ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π΅Π³ΠΎ Π½Π° 0, ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, являСтся Π»ΠΈ число Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ
послСдний Π±ΠΈΡ‚ числа я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ И (&).

Π’ C ++ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅:

 if ((nNumberToTest% 2) == 1) 

с:

 if ((nNumberToTest & 0x1) == 1) 

Π’ C # Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ:

, Ссли ((iNumberToTest% 2) == 1) 

с:

, Ссли ((iNumberToTest & 0x1) == 1) 

Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

ΠžΡ‚Π»Π°Π΄ΠΊΠ° C ++ Выпуск C ++ ΠžΡ‚Π»Π°Π΄ΠΊΠ° C # Выпуск C #
922.46 560,86 1641,41 714,10

C ++
РСлизная вСрсия большС всСго Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‚ этой ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Π Π°Π·Π½ΠΈΡ†Π° Π²
ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями C ++ Release ΠΈ Debug заставляСт мСня Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ
компилятор ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ большС инструкций Π² сборкС Release с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ
Π½ΠΎΠ²Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

C #
ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ эта оптимизация Π½Π΅ слишком Π²Ρ‹Π³ΠΎΠ΄Π½Π°.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ опСрация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, — это Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° 2.Если ΠΌΡ‹ снова посмотрим Π½Π°
Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС чисСл, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΄Π΅Π»ΠΈΠΌ Π½Π°
2 отбрасываСм послСдний Π±ΠΈΡ‚ числа ΠΈ добавляСм 0 Π±ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΌΡΡ
Π±ΠΈΡ‚Ρ‹. Π˜Ρ‚Π°ΠΊ, 5 (= 101) / 2 = 2 (= 010), 13 (= 1101) / 2 = 6 (= 0110), 6 (= 110) / 2 = 3
(= 011) ΠΈ Ρ‚. Π”. Π—Π°ΠΌΠ΅Π½ΡΡŽ эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ сдвигом Π²ΠΏΡ€Π°Π²ΠΎ
опСрация, Π΄Π°ΡŽΡ‰Π°Ρ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π’ C ++ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅:

 nNumberToTest = nNumberToTest / 2; 

с:

 nNumberToTest = nNumberToTest >> 1; 

Π’ C # Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ:

 iNumberToTest = iNumberToTest / 2; 

с:

 iNumberToTest = iNumberToTest >> 1; 

Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

ΠžΡ‚Π»Π°Π΄ΠΊΠ° C ++ Выпуск C ++ ΠžΡ‚Π»Π°Π΄ΠΊΠ° C # Выпуск C #
821.58 555,96 1432,01 652,11

C ++
Debug, C # Debug, C # Release вСрсия Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‚ 65 Π΄ΠΎ 200 миллисСкунд ΠΎΡ‚
это оптимизация.

C ++
Π Π΅Π»ΠΈΠ· ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΡ‚ этой Π·Π°ΠΌΠ΅Π½Ρ‹, вСроятно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ
компилятор ΡƒΠΆΠ΅ выполнял эту ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ.

ПослСдняя
матСматичСская опСрация, которая Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, — это ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° 3. ЕдинствСнноС
Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‚Π°ΠΊ это Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π΅ дополнСниями.

Π’ C ++ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ:

 nNumberToTest = nNumberToTest * 3 + 1;
 

с:

 nNumberToTest = nNumberToTest + nNumberToTest + nNumberToTest + 1;
 

Π’ C # Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ:

 iNumberToTest = iNumberToTest * 3 + 1;
 

с:

 iNumberToTest = iNumberToTest + iNumberToTest + iNumberToTest + 1;
 

Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

C ++ Debug C ++ Release C # Debug C # Release
820.84 548,93 1535,28 629,89

наибольший прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ Π² вСрсии C # Release, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт
вСрсия C ++ Release.

ВСрсия ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ C # ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ сниТСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ·-Π·Π°
ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ тСкущая вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния выполняСт большС инструкций, Ρ‡Π΅ΠΌ
прСдыдущая ΠΈ компилятор Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ инструкции (Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚
Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΈΡ… Ρ‡Π΅ΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π½Π° любом ΠΈΠ· Π½ΠΈΡ…).

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

ΠšΠΎΠΌΡƒ
ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ
постановка Π·Π°Π΄Π°Ρ‡ΠΈ. Если число Ρ‡Π΅Ρ‚Π½ΠΎΠ΅, ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° 2 (ΠΊΠ°ΠΊ прСдписано
Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ).Если число Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ 2 * n + 1. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ
ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ исходного Π²ΠΈΠ΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

Из ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ уравнСния Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ
2 шага Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² 1. ΠœΡ‹ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹
Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ числа для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, прСдполагая, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ‚Π½ΠΎΠ΅.
Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ сохраним Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послСднСго Π±ΠΈΡ‚Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ числа для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Если
это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ истинно, ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠΌ счСтчик Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ
number + 1 ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ числа для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.(ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: эта оптимизация
станСт Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΌ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… статСй, ΠΊΠΎΠ³Π΄Π° я расскаТу ΠΎ
SSE).

Π’ C ++ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ:

 if ((nNumberToTest% 2) == 1)
{
 nNumberToTest = nNumberToTest * 3 + 1;
}
Π΅Ρ‰Π΅
{
 nNumberToTest = nNumberToTest / 2;
}
nCurrentCycleCount ++; 

с:

 int nOddBit = nNumberToTest & 0x1;
long long nTempNumber = nNumberToTest >> 1;
nTempNumber + = nOddBit? nNumberToTest + 1: 0;
nCurrentCycleCount + = nOddBit? 2: 1;
nNumberToTest = nTempNumber; 

Π’ C # Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ:

 Ссли ((iNumberToTest% 2) == 1)
{
    iNumberToTest = iNumberToTest * 3 + 1;
}
Π΅Ρ‰Π΅
{
    iNumberToTest = iNumberToTest / 2;
}
iCurrentCycleCount ++; 

с:

 bool bOddBit = (iNumberToTest & 0x1) == 0x1;
long iTempNumber = iNumberToTest >> 1;
iTempNumber + = bOddBit? iNumberToTest + 1: 0;
iCurrentCycleCount + = bOddBit? 2: 1;
iNumberToTest = iTempNumber; 

Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

ΠžΡ‚Π»Π°Π΄ΠΊΠ° C ++ Выпуск C ++ ΠžΡ‚Π»Π°Π΄ΠΊΠ° C # Выпуск C #
1195.38 462,21 1565,01 752,92

ОбС ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ сборки ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹
Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ большС инструкций ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями
ΠΊΠΎΠ΄ ΠΈ компиляторы Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ВСрсия выпуска C # ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·-Π·Π° отсутствия условного пСрСмСщСния
инструкции Π½Π° C #.

ΠΌΠΎΡ‰ΡŒ этой ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ инструкций подтвСрТдаСтся ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹
ВСрсия выпуска C ++.

Π­Ρ‚ΠΎ
ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ я Ρ€Π΅ΡˆΠΈΠ» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСкурсии.Для этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹
рСкурсивный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ: максимальная Π΄Π»ΠΈΠ½Π° Ρ†ΠΈΠΊΠ»Π° 525,
поэтому прСдполагая, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ чисСл ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π»ΠΈΠ½Ρƒ Ρ†ΠΈΠΊΠ»Π° ΠΎΠΊΠΎΠ»ΠΎ 150 (просто ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅,
фактичСски Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ), Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ 150 рСкурсивных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ числа ΠΌΠ΅ΠΆΠ΄Ρƒ
1 ΠΈ 1000000, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ 150000000 Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π­Ρ‚ΠΎ явно Π½Π΅
нСбольшоС число ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, рСкурсия
ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ, Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π”ΠΎΡΡ‚ΠΎΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π­Ρ‚ΠΎ
врСмя Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Ρ‹:

  1. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΈ дСлСнию Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ ΠΈΡ… слСдуСт Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°
    Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.
  2. ΠŸΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ прСдставлСниС
    ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.
  3. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ IF ΠΈΠ· вашСго ΠΊΠΎΠ΄Π° Π² случаС, Ссли ΠΎΠ½ΠΈ
    Ρ†Π΅Π»ΡŒ — ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ значСния Π½Π° основС условия.

The
Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π· Ρ‚Π΅ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ быстрСС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ
Π² C # ΠΈ C ++.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ

  • 27 мая 2012 Π³. — ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ выпуск.
  • 28 мая 2012 Π³. — Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ anlarke Π·Π° ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΈ Π·Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° (ВрСмя ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ C ++: 546.76 мс, C ++ ВрСмя выпуска: 386,35 мс). Π’Π°ΠΊΠΆΠ΅ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ Π Π΅ΠΎΠ½Π΅ΠΊΠΎΡ‚Π° Π·Π° Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΡ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ WoW. Он ΠΏΡ€Π°Π² ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ рСгистры 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ (для x86) ΠΈ 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ (для x64).

.

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ

Python — ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык программирования. И ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π»Π΅Π³Ρ‡Π΅ ΠΈ быстрСС. Он Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΡΡ‚ΡŒ, Π½ΠΎ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ это с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ. НиТС ΠΌΡ‹ пСрСчислили Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… совСтов ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Python . Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ дальшС!

ΠšΡ€ΠΈΡ‚ΠΈΠΊΠΈ

Python ΠΈΠ½ΠΎΠ³Π΄Π° ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ. Но это Π½Π΅ ΠΈΠ·-Π·Π° Python, Π° ΠΈΠ·-Π·Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π°.Π—Π΄Π΅ΡΡŒ, Π² этом постС, Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ совСты ΠΏΠΎ ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Python.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Python — это язык с Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, всСгда Π΅ΡΡ‚ΡŒ возмоТности для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш ΠΊΠΎΠ΄ Python Ρ€Π°Π±ΠΎΡ‚Π°Π» Π΅Ρ‰Π΅ быстрСС ΠΈ эффСктивнСС, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ.

ΠšΡ€Π°ΡΠΎΡ‚Π° этих совСтов ΠΈ Python — это всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° самом Π΄Π΅Π»Π΅ Π»Π΅ΠΆΠ°Ρ‚ Π² области Python . Π’Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ дисциплинированно ΠΏΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. НСдавно ΠΌΡ‹ написали ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ Ρ‚Ρ€ΠΈΠ΄Ρ†Π°Ρ‚ΠΈ основных совСтах ΠΈ ​​приСмах программирования Π½Π° Python .Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅.

Π—Π΄Π΅ΡΡŒ прСдставлСна ​​таблица индСкса , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² этом сообщСнии.

1. Π‘Ρ‚Ρ€ΡƒΠ½Ρ‹ для опрСдСлСния эффСктивности.
2. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π³Π»Π°Π·ΠΊΠ°.
3. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ вашСго ΠΊΠΎΠ΄Π°.
3.1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сСкундомСра с .
3.2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с .
4. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΊΠ»ΡŽΡ‡ΠΈ для сортировки.
5. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ†ΠΈΠΊΠ»ΠΎΠ².
5.1. Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° for Π² Python.
5.2. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΡƒΠ΅ΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ?
6. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ.
7. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ использования Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….
8. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ внСшниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ / ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹.
9. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.
10. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ поиска ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Ρ†ΠΈΠΊΠ»Π΅.
11. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ строк.
12. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° If.

Π”Π°Π²Π°ΠΉΡ‚Π΅ сначала Π½Π°Ρ‡Π½Π΅ΠΌ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… основных Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своих интСрСсах.

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Python для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… Ρ„Π°Π½Π°Ρ‚ΠΎΠ²

1. Π‘Ρ‚Ρ€ΡƒΠ½Ρ‹ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности

Π˜Π½Ρ‚Π΅Ρ€Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строки — это ΠΌΠ΅Ρ‚ΠΎΠ΄ хранСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ строки. И ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ строки, манипулируя нашим ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строк.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ создаСм строковый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python опрСдСляСт, ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈ строку ΠΈΠ»ΠΈ Π½Π΅Ρ‚.Π­Ρ‚ΠΎ внутрСнняя ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ раскрываСт Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… условиях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

ОбъявлСниС строки с ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ начинаСтся с Π±ΡƒΠΊΠ²Ρ‹ ΠΈΠ»ΠΈ подчСркивания ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π±ΡƒΠΊΠ² / ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠΉ / Ρ†ΠΈΡ„Ρ€, заставит Python ΠΈΠ½Ρ‚Π΅Ρ€Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ для Π½Π΅Π΅ Ρ…ΡΡˆ.

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

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ это довольно полСзная функция Python, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с пользой. Вакая функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ большого прилоТСния для ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° тСкста ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ частого поиска ΠΈ пСрСбрасывания сообщСний для бухгалтСрского ΡƒΡ‡Π΅Ρ‚Π°.

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΏΠΎ сСти, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ автоматичСского интСрнирования Π² Python. ВмСсто этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ intern () для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°ΠΊΠΈΡ… строк.

TOC

2. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Π»Π°Π·ΠΊΠ°

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π³Π»Π°Π·ΠΊΠ° — это ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ нСбольшой сСгмСнт инструкций ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎΡ‚ сСгмСнт Ρ‚ΠΎΠ³Π΄Π° извСстСн ΠΊΠ°ΠΊ ΠΈΠ»ΠΈ .Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ инструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ вСрсиСй.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ Python справляСтся с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π³Π»Π°Π·ΠΊΠ°. Π’ Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ встроСнный способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, посмотритС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½ΠΈΠΆΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€-1

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΅ΡΡ‚ΡŒ функция, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ Π΄Π²Π° своих Ρ‡Π»Π΅Π½Π°. Один ΠΈΠ· Π½ΠΈΡ… — строка, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ — Ρ†Π΅Π»ΠΎΠ΅ число. Π”Π°Π»Π΅Π΅ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ добавляСтся Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ <НСт>. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° останутся Π² памяти ΠΊΠ°ΠΊ константы.ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π½ΠΈΠΆΠ΅.

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Python — ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (1)

На ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ снимкС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ использовали константу <.__ code __. Co_consts>. Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python. Π”Π°, функция Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π² Python. Он состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π΅Ρ… ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ.

1. <__ code __. Co_varnames>: содСрТит Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.
2. Код <__ code__.co_names>: Ρ…Ρ€Π°Π½ΠΈΡ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹.
3. <__ code __. Co_consts>: ссылки Π½Π° всС константы.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ оптимизация с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π»Π°Π·ΠΊΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ измСняСмых конструкций Π² нСизмСняСмыС. Π‘ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½ΠΈΠΆΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€-2

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡ‰Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ элСмСнт Π² Π½Π°Π±ΠΎΡ€Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«inΒ». Π—Π΄Π΅ΡΡŒ Python ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ принадлСТности элСмСнта.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ инструкции ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ с постоянной ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΡŽ, нСзависимо ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π°Π±ΠΎΡ€Π°. И ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΡ… быстрСС, Ρ‡Π΅ΠΌ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π² случаС ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΈΠ»ΠΈ списка. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ извСстСн ΠΊΠ°ΠΊ тСстированиС члСнства Π² Python. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ снимок экрана.

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Python — ΠŸΡ€ΠΈΠΌΠ΅Ρ€ (2)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€-3

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ списка Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ ΠΌΡ‹ это Π΄Π΅Π»Π°Π»ΠΈ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π² послСднСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Python Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Ρ‚ Π΅Π³ΠΎ Π² константу ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°.Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΌΡ‹ объСдинили использованиС Π½Π°Π±ΠΎΡ€Π° ΠΈ списка вмСстС. И ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° пСрСводятся Π² константы. Π‘ΠΌ. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ снимок экрана.

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Python — ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (3)

Π’ΠΎΡ‚ ΠΆΠ΅ Ρ„Π°ΠΊΡ‚ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, посмотрСв Π½Π° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Для этого Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Β«disΒ» Python. А ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° конструктору dis распСчатаСт вСсь ΠΌΠ°ΠΊΠ΅Ρ‚ памяти Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π΅.

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Python — ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (4)

Из Π²Ρ‹Π²ΠΎΠ΄Π° Β«disΒ» Π² ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ довольно Π»Π΅Π³ΠΊΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π°Π±ΠΎΡ€, ΠΈ список ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ Π² константы.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠΌ здСсь являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Python выполняСт это ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ². Если Π±Ρ‹ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π½Π°Π±ΠΎΡ€ΠΎΠ² / списков, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, Π½Π΅ Π±Ρ‹Π» Π±Ρ‹ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌΠΈ, Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π±Ρ‹.

TOC

3. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ свой ΠΊΠΎΠ΄

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°ΠΈΠ²Π½ΠΎ, Ссли Π±Ρ‹ Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ, Π² Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΡƒΠ·ΠΊΠΈΠ΅ мСста.Π˜Ρ‚Π°ΠΊ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ свой ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ любой ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ², упомянутых Π½ΠΈΠΆΠ΅.

3.1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сСкундомСра с

Π­Ρ‚ΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ способ профилирования с использованиСм модуля Python . Он записываСт врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для выполнСния сСгмСнта вашСго ΠΊΠΎΠ΄Π°. Он измСряСт ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π΅ врСмя Π² миллисСкундах.

 врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°

subStrings = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']

def simpleString (подстроки):
  finalString = ''
  для части Π² подстроках:
    finalString + = Ρ‡Π°ΡΡ‚ΡŒ
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ finalString
 
def formatString (subStrings):
  finalString = "% s% s% s% s% s% s% s"% (subStrings [0], subStrings [1],
  subStrings [2], subStrings [3],
  subStrings [4], subStrings [5],
  subStrings [6])
  Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ finalString
 
def joinString (подстроки):
  Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ''.ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ (подстроки)

print ('joinString () Time:' + str (timeit.timeit ('joinString (subStrings)', setup = 'from __main__ import joinString, subStrings')))
print ('formatString () Time:' + str (timeit.timeit ('formatString (subStrings)', setup = 'from __main__ import formatString, subStrings')))
print ('simpleString () Time:' + str (timeit.timeit ('simpleString (subStrings)', setup = 'from __main__ import simpleString, subStrings')))
 
 joinString () ВрСмя: 0.236362

000001 formatString () ВрСмя: 0.711244 simpleString () ВрСмя: 0.6721448

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ соСдинСния Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивСн, Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

3.2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с

Начиная с Python 2.5, cProfile являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Python. Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ профилирования для выявлСния ΡƒΠ·ΠΊΠΈΡ… мСст Π² ΠΊΠΎΠ΄Π΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ это с вашим ΠΊΠΎΠ΄ΠΎΠΌ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами. НапримСр, ΠΎΠ±Π΅Ρ€Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΅Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° запуска, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Или запуститС вСсь сцСнарий ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π² cProfile Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ Python Β«-mΒ».

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ нСсколько основных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

3.2.1. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ (1) — ИспользованиС cProfile Π² Python
 ΠΈΠΌΠΏΠΎΡ€Ρ‚ cProfile
cProfile.run ('10 * 10 ') 
 3 Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π° 0,000 сСкунд

   УпорядочСно ΠΏΠΎ: стандартному названию

   ncalls tottime percall cumtime percall имя Ρ„Π°ΠΉΠ»Π°: бСльС (функция)
        1 0,000 0,000 0,000 0,000 <строка>: 1 (<ΠΌΠΎΠ΄ΡƒΠ»ΡŒ>)
        1 0,000 0.000 0.000 0.000 {встроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ builtins.exec}
        1 0,000 0,000 0,000 0,000 {ΠΌΠ΅Ρ‚ΠΎΠ΄ 'disable' ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² '_lsprof.Profiler'} 

Глядя Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ области для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ. Π•Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ cProfile Π²ΠΎ врСмя выполнСния скрипта.

3.2.2. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ (2) — ИспользованиС cProfile Π² Python
 $ python -m cProfile -s cumtime test1.py
         3 Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π° 0,000 сСкунд

   УпорядочСно ΠΏΠΎ: стандартному названию

   ncalls tottime percall cumtime percall имя Ρ„Π°ΠΉΠ»Π°: бСльС (функция)
        1 0.000 0,000 0,000 0,000 <строка>: 1 (<ΠΌΠΎΠ΄ΡƒΠ»ΡŒ>)
        1 0,000 0,000 0,000 0,000 {встроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ builtins.exec}
        1 0,000 0,000 0,000 0,000 {ΠΌΠ΅Ρ‚ΠΎΠ΄ 'disable' ΠΈΠ· '_lsprof.Prof
iler 'ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹}


         303 Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (302 ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²Π°) Π·Π° 0,005 сСкунды

   УпорядочСно ΠΏΠΎ: совокупному Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

   ncalls tottime percall cumtime percall имя Ρ„Π°ΠΉΠ»Π°: бСльС (функция)
      2/1 0,000 0,000 0,005 0.005 {встроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ builtins.exec}
        1 0,000 0,000 0,005 0,005 test1.py:1 (<ΠΌΠΎΠ΄ΡƒΠ»ΡŒ>)
        1 0,000 0,000 0,004 0,004 cProfile.py:15(run)
        1 0,000 0,000 0,004 0,004 profile.py:52(run)
        1 0,000 0,000 0,004 0,004 cProfile.py:92(run)
        1 0,000 0,000 0,004 0,004 cProfile.py:97(runctx)
        1 0,004 0,004 0,004 0,004 {ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΒ» _lsprof.Profi
ler 'ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹}
        1 0.000 0,000 0,001 0,001 <замороТСнная importlib._bootstrap>: 966 (_find_and_load)
        1 0,000 0,000 0,001 0,001 <замороТСнная importlib._bootstrap>: 939 (_find_and_load_unlocked)
        1 0,000 0,000 0,000 0,000 <Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ importlib._bootstrap>: 879 (_find_spec)
        1 0,000 0,000 0,000 0,000 <замороТСнная importlib._bootstrap_external>: 1133 (find_spec)
        1 0,000 0,000 0,000 0,000 <замороТСнная importlib._bootstrap_external>: 1101 (_get_spec)
        4 0.000 0,000 0,000 0,000 <замороТСнная importlib._bootstrap_external>: 1215 (find_spec)
        1 0,000 0,000 0,000 0,000 <замороТСнная importlib._bootstrap>: 659 (_load_unlocked)
        1 0,000 0,000 0,000 0,000 <замороТСнная importlib._bootstrap_external>: 659 (exec_module)
        1 0,000 0,000 0,000 0,000 <замороТСнная importlib._bootstrap_external>: 729 (get_code)
        6 0,000 0,000 0,000 0,000 <замороТСнная importlib._bootstrap_external>: 68 (_path_stat)
        6 0.000 0.000 0.000 0.000 {встроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ nt.stat}
[...] 
3.2.3. Как ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ cProfile?

Π•Ρ‰Π΅ Π²Π°ΠΆΠ½Π΅Π΅ Π½Π°ΠΉΡ‚ΠΈ Π²ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠ° ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ профилирования. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ элСмСнты, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚ cProfile.

1. : Π­Ρ‚ΠΎ количСство сдСланных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².
2. : ΠžΠ±Ρ‰Π΅Π΅ врСмя, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π½Π° Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.
3. : ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ частноС ΠΎΡ‚ , Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° .
4. : Π‘ΡƒΠΌΠΌΠ°Ρ€Π½ΠΎΠ΅ врСмя выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΈΡ… ΠΏΠΎΠ΄Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
5. : ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ частноС ΠΎΡ‚ , Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π½Π° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹.
6. : Π’ΠΎΡ‡ΠΊΠ° дСйствия Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ строчка Π½Π΅Ρ‚. ΠΈΠ»ΠΈ функция Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ мСстС Ρ„Π°ΠΉΠ»Π°.

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

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΈ . Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ. Π§Ρ‚ΠΎ касаСтся ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ², Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

TOC

4. ИспользованиС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ для сортировки

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

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

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ сортировкС элСмСнтов Π² спискС Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎ возмоТности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сортируСм список ΠΏΠΎ индСксу, Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π’ΠΎΡ‚ ΠΆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ со строками.

 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°

test = [(11, 52, 83), (61, 20, 40), (93, 72, 51)]
print ("ΠŸΠ΅Ρ€Π΅Π΄ сортировкой:", тСст)

test.sort (ΠΊΠ»ΡŽΡ‡ = operator.itemgetter (0))
print ("ПослС сортировки [1]:", тСст)

ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°.sort (key = operator.itemgetter (1))
print ("ПослС сортировки [2]:", тСст)

test.sort (ΠΊΠ»ΡŽΡ‡ = operator.itemgetter (2))
print ("ПослС сортировки [3]:", тСст)
 
 ΠŸΠ΅Ρ€Π΅Π΄ сортировкой: [(11, 52, 83), (61, 20, 40), (93, 72, 51)]
ПослС сортировки [1]: [(11, 52, 83), (61, 20, 40), (93, 72, 51)]
ПослС сортировки [2]: [(61, 20, 40), (11, 52, 83), (93, 72, 51)]
ПослС сортировки [3]: [(61, 20, 40), (93, 72, 51), (11, 52, 83)] 

TOC

5. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ†ΠΈΠΊΠ»ΠΎΠ²

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ языков программирования ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°ΡŽΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ².Π’ Python Ρƒ нас Π΅ΡΡ‚ΡŒ способ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстрСС. Рассмотрим ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ программисты часто ΡƒΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΈΠ· Π²ΠΈΠ΄Ρƒ, — это ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ использования Ρ‚ΠΎΡ‡Π΅ΠΊ Π² Ρ†ΠΈΠΊΠ»Π΅.

Π’ Python Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ нСсколько ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ†ΠΈΠΊΠ». Из этих Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ использованиС Ρ†ΠΈΠΊΠ»Π° for. Π₯отя Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΡŽΠ±ΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ‚Π»ΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ свою Ρ†Π΅Π½Ρƒ. Π”Π²ΠΈΠΆΠΎΠΊ Python Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ усилия Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ конструкции Ρ†ΠΈΠΊΠ»Π° for. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, всСгда ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… встроСнными конструкциями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠšΠ°Ρ€Ρ‚Ρ‹.

Π”Π°Π»Π΅Π΅, ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Ρ‚Π°ΠΊΠΆΠ΅ зависит ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… Π·Π½Π°Π½ΠΈΠΉ встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Python. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΌΡ‹ попытаСмся ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π·Π½Ρ‹Π΅ конструкции ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ².

5.1. Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° for Π² Python
ΠŸΡ€ΠΈΠΌΠ΅Ρ€-1

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая обновляСт список ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Ρ… индСксов, удаляСт ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ†ΠΈΠΊΠ» for.

 newZipcodes = []

для ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ индСкса Π² старых ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Ρ… индСксах:
    Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы.Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ (zipcode.strip ()) 
ΠŸΡ€ΠΈΠΌΠ΅Ρ€-2

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² ΠΎΠ΄Π½Ρƒ линию с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠ°Ρ€Ρ‚Ρ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π½Ρ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎ.

 newZipcodes = map (str.strip, oldZipcodes) 
ΠŸΡ€ΠΈΠΌΠ΅Ρ€-3

ΠœΡ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ списки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ синтаксис Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ.

 ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы + = [iter.strip () для iter Π² Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Ρ… индСксах] 
ΠŸΡ€ΠΈΠΌΠ΅Ρ€-4

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, самым быстрым ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° for Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

 itertools.chain (ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы, (iter.strip () для iter Π² Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Ρ… индСксах)) 
5.2. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΡƒΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ?

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

 врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ itertools

ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы = ['121212', '232323', '434334']
newZipcodes = ['131313', '242424', '212121', '323232', '342312', '565656']

def updateZips (Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы, ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы):
    для ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ индСкса Π² Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Ρ… индСксах:
        ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы.Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ (zipcode.strip ())

def updateZipsWithMap (Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы, ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы):
    ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы + = ΠΊΠ°Ρ€Ρ‚Π° (str.strip, newZipcodes)

def updateZipsWithListCom (Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы, ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы):
    ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы + = [iter.strip () для iter Π² Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Ρ… индСксах]

def updateZipsWithGenExp (Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы, ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы):
    Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ itertools.chain (Zipcodes, (iter.strip () для iter Π² newZipcodes))


print ('updateZips () Time:' + str (timeit.timeit ('updateZips (newZipcodes, Zipcodes)', setup = 'from __main__ import updateZips, newZipcodes, Zipcodes')))

ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы = ['121212', '232323', '434334']
print ('updateZipsWithMap () Time:' + str (timeit.timeit ('updateZipsWithMap (newZipcodes, Zipcodes)', setup = 'from __main__ import updateZipsWithMap, newZipcodes, Zipcodes')))

ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы = ['121212', '232323', '434334']
print ('updateZipsWithListCom () Time:' + str (timeit.timeit ('updateZipsWithListCom (newZipcodes, Zipcodes)', setup = 'from __main__ import updateZipsWithListCom, newZipcodes, Zipcodes')))

ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы = ['121212', '232323', '434334']
print ('updateZipsWithGenExp () Time:' + str (timeit.timeit ('updateZipsWithGenExp (newZipcodes, Zipcodes)', setup = 'from __main__ import updateZipsWithGenExp, newZipcodes, Zipcodes')))
 
 updateZips () ВрСмя: 1.525283
updateZipsWithMap () ВрСмя: 1.4145331
updateZipsWithListCom () ВрСмя: 1.4271637
updateZipsWithGenExp () ВрСмя: 0.6092696999999996 

TOC

6. ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ

Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для управлСния Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ. Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ добавляСм элСмСнт Π² Π½Π°Π±ΠΎΡ€, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python опрСдСляСт Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² памяти, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ для Π½Π°Π±ΠΎΡ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ…ΡΡˆ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ элСмСнта.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Python автоматичСски измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ постоянной (O (1)) нСзависимо ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π°Π±ΠΎΡ€Π°.ИмСнно поэтому Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ быстрСС.

Π’ Python ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ мноТСствами Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ объСдинСниС, пСрСсСчСниС ΠΈ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² своСм ΠΊΠΎΠ΄Π΅ Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это быстрСС, Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ списки.

 ОписаниС синтаксичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
   ------ --------- -----------
set (l1) | set (l2) Union Set со всСми элСмСнтами l1 ΠΈ l2.
set (l1) & set (l2) Набор пСрСсСчСний с ΠΎΠ±Ρ‰ΠΈΠΌΠΈ элСмСнтами l1 ΠΈ l2.
set (l1) -set (l2) Π Π°Π·Π½ΠΈΡ†Π° Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ с l1 элСмСнтами, Π½Π΅ входящими Π² l2.

7. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ использования Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π­Ρ‚ΠΎ Π½Π΅ ограничиваСтся Python, ΠΏΠΎΡ‡Ρ‚ΠΈ всС языки Π½Π΅ ΠΎΠ΄ΠΎΠ±Ρ€ΡΡŽΡ‚ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ ΠΈΠ»ΠΈ Π½Π΅Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ использованиС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ скрытыС / Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты, приводящиС ΠΊ спагСтти-ΠΊΠΎΠ΄Ρƒ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Python ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ обращаСтся ΠΊ внСшним ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

Однако ΠΎΠ½ допускаСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ использованиС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ внСшнюю ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово global. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сдСлайтС Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ копию, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ².

8. ИспользованиС Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ / ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

НСкоторыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python ΠΈΠΌΠ΅ΡŽΡ‚ эквивалСнт Π½Π° языкС C с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ функциями, Ρ‡Ρ‚ΠΎ ΠΈ исходная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. НаписаниС Π½Π° Β«CΒ» заставляСт ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстрСС. НапримСр, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ cPickle вмСсто использования pickle.

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ статичСским компилятором для Python. Π­Ρ‚ΠΎ надмноТСство Python ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚ΠΈΠΏΡ‹ C. Он инструктируСт компилятор ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ быстрый ΠΈ эффСктивный ΠΊΠΎΠ΄.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΏΠ°ΠΊΠ΅Ρ‚Π° PyPy. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ JIT-компилятор (Just-in-time), благодаря ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΊΠΎΠ΄ Python запускаСтся нСвСроятно быстро. Π’Ρ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ускорСниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

TOC

9. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

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

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΠ°Ρ€Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ.

10. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ поиск ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Ρ†ΠΈΠΊΠ»Π΅

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Ρ†ΠΈΠΊΠ»Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° вмСсто Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС поиск ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² обходится Π΄ΠΎΡ€ΠΎΠ³ΠΎ.

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

 >>> для нСго в xrange (10000):
>>> myLib.findMe (это) 
 >>> findMe = myLib.Найди мСня
>>> для нСго в xrange (10000):
>>> findMe (это) 

TOC

11. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ строк

ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ строк выполняСтся ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ этого Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ соСдинСния Python. Или ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ форматирования, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΡƒΡŽ строку.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

RegEx Π² Python Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ быстро, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ΄ C. Однако Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π±Π°Π·ΠΎΠ²Ρ‹Π΅ строковыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ , Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π»ΡƒΡ‡ΡˆΠ΅.

Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля . Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ самый быстрый.

12. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if

Подобно Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ языков программирования, Python допускаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ выполнСния. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΠ΅ условия «И», Ρ‚ΠΎ Π½Π΅ всС условия Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Ρ‹, Ссли ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ… окаТСтся Π»ΠΎΠΆΠ½Ρ‹ΠΌ.

1. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄ для использования этого повСдСния Python.НапримСр, Ссли Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ фиксированный шаблон Π² спискС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ объСм, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ условиС.

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ условиС «И», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ становится Π»ΠΎΠΆΠ½Ρ‹ΠΌ, Ссли Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ строки мСньшС Π΄Π»ΠΈΠ½Ρ‹ шаблона.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сначала ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ быстроС условиС (Ссли ΠΎΠ½ΠΎ Π΅ΡΡ‚ΡŒ), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ «строка Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с @Β» ΠΈΠ»ΠΈ «строка Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉΒ».

2. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ условиС <, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ , Π° Π½Π΅ НСт >, Ρ‡Ρ‚ΠΎ быстрСС, Ρ‡Π΅ΠΌ использованиС <, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ! = НСт >.

TOC

РСзюмС

— Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Python

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ быстрыС прилоТСния Python. Но ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ этих совСтов ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ установили сСрыС области Π² своСм ΠΊΠΎΠ΄Π΅.

НСкоторыС совСты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сразу ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² своСй ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ кодирования. НапримСр, использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² профилирования, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²Π°ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π²Π΅Π΄ΡƒΡ‚ Π½Π° ΠΏΡƒΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

Помимо ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ совСтов, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄ Π½Π° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ слоТности Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… конструкций Python, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ список, Π½Π°Π±ΠΎΡ€ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. НаконСц, собСритС ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС Π΄Π°Π½Π½Ρ‹Ρ…, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

Если ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ пост Β« Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Python Β» ΠΏΠΎΠ±ΡƒΠ΄ΠΈΠ» вас ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ быстрый ΠΈ качСствСнный ΠΊΠΎΠ΄, Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΎΡ‡ΡŒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΈΠΌ с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΈΡ€ΠΎΠΌ.

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚, вас Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒ. Π’ΠΈΠ΄Π΅Π½ΠΈΠ΅ тянСт вас. — Π‘Ρ‚ΠΈΠ² ДТобс

ВсСго Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ,
TechBeamers

.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *