ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ «Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎΒ» Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых вострСбованных срСди Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½ΠΎ Π΅Ρ‘ Π½ΡŽΠ°Π½ΡΡ‹ часто ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π·Π° ΠΊΠ°Π΄Ρ€ΠΎΠΌ. На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, это простой Ρ†ΠΈΠΊΠ» для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, Π½ΠΎ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ особСнности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ Π΄Π°ΠΆΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Для КаТдого Из Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²? Как ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ элСмСнтов прямо Π² Ρ†ΠΈΠΊΠ»Π΅? И ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ программисты ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΅ΠΌΡƒ Пока?

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π΅ просто ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ синтаксис β€” ΠΎΠ½Π° раскроСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘, ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ кСйсы ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π°Π±ΠΎΡ‚Ρƒ с большими массивами Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ транзакциями), ΠΈ даст Ρ‡Π΅ΠΊ-лист для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ вашСго ΠΊΠΎΠ΄Π° Π½Π° скрытыС Β«ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈΒ». ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ различиям ΠΌΠ΅ΠΆΠ΄Ρƒ управляСмым ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ тонкостям Ρ€Π°Π±ΠΎΡ‚Ρ‹ с динамичСскими списками ΠΈ запросами.

1. Бинтаксис ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Для КаТдого Из <ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ> Π¦ΠΈΠΊΠ» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ элСмСнтам ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ: массивов, списков Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚Π°Π±Π»ΠΈΡ† Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запросов ΠΈ Π΄Π°ΠΆΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π•Ρ‘ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис выглядит Ρ‚Π°ΠΊ:

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Массив Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

  • πŸ”Ή НСявноС объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ: Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ создаётся автоматичСски ΠΈ доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. Π•Π³ΠΎ Ρ‚ΠΈΠΏ соотвСтствуСт Ρ‚ΠΈΠΏΡƒ элСмСнтов ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
  • πŸ”Ή ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΎΠ±Ρ…ΠΎΠ΄Π°: Для массивов ΠΈ списков Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” ΠΏΠΎ индСксу (ΠΎΡ‚ 0 ΠΈΠ»ΠΈ 1, Π² зависимости ΠΎΡ‚ настройки ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹). Для Ρ‚Π°Π±Π»ΠΈΡ† Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” ΠΏΠΎ строкам свСрху Π²Π½ΠΈΠ·.
  • πŸ”Ή ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ индСкса: Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ†ΠΈΠΊΠ»Π° Для, здСсь Π½Π΅Ρ‚ счётчика (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, i). Если Π½ΡƒΠΆΠ΅Π½ индСкс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Массив.ИндСкс(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚).

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ 1Π‘ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ этот Ρ†ΠΈΠΊΠ»: для статичСских ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, фиксированных массивов) ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ€Π°Π½Π΅Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, Π° для динамичСских (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запроса) β€” Π½Π΅Ρ‚. Π­Ρ‚ΠΎ влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

πŸ’‘

Если Π² Ρ†ΠΈΠΊΠ»Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ саму ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±Ρ…ΠΎΠ΄: Для Инд = Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π° По 0 Π¦ΠΈΠΊΠ» с ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ индСксу. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ сдвиг элСмСнтов ΠΈ пропуск ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ.

2. «Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎΒ» vs «Пока»: ΠΊΠΎΠ³Π΄Π° Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚: ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ всСгда Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Для КаТдого, Ссли ΠΎΠ½ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Π΅Π΅? ΠžΡ‚Π²Π΅Ρ‚ кроСтся Π² Ρ‚Ρ€Ρ‘Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… различиях:

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉΒ«Π”Π»Ρ каТдого»«Пока»
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΠ‘Ρ‹ΡΡ‚Ρ€Π΅Π΅ для статичСских ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉΠ“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ: ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ Π·Π°Π΄Π°Ρ‡Ρƒ
ДинамичСскиС измСнСнияРиск пропуска элСмСнтов ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ итСрациями
Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ ΡƒΡΠ»ΠΎΠ²ΠΈΡΠ’ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ всСх ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ²Π›ΡŽΠ±Ρ‹Π΅ условия Π²Ρ‹Ρ…ΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Пока НС Нашли И НомСр < 100)
Π Π°Π±ΠΎΡ‚Π° с индСксамиВрСбуСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠΉΠ˜Π½Π΄Π΅ΠΊΡ доступСн Β«ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ»

ΠŸΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ Пока Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌ:

ИндСкс = 0;

Пока ИндСкс < Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π° И Массив[ИндСкс] <> Π˜ΡΠΊΠΎΠΌΠΎΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π¦ΠΈΠΊΠ»

ИндСкс = ИндСкс + 1;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

А здСсь Π»ΡƒΡ‡ΡˆΠ΅ Для КаТдого:

Π‘ΡƒΠΌΠΌΠ° = 0;

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π¦ΠΈΠΊΠ»

Π‘ΡƒΠΌΠΌΠ° = Π‘ΡƒΠΌΠΌΠ° + Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π‘ΡƒΠΌΠΌΠ°;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

πŸ“Š Какой Ρ†ΠΈΠΊΠ» Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ Π² 1Π‘?
Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ
Пока
Оба одинаково
Зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ

3. Π Π°Π±ΠΎΡ‚Π° с большими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: оптимизация ΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π΅ тысяч строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запроса Для КаТдого ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Β«Π±ΡƒΡ‚Ρ‹Π»ΠΎΡ‡Π½Ρ‹ΠΌ Π³ΠΎΡ€Π»Ρ‹ΡˆΠΊΠΎΠΌΒ». ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

  • 🐒 Π—Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ: Если Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ саму ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ/ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ строки), ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π½ΠΎ пСрСсчитываСт индСксы, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
  • πŸ—‘οΈ Π£Ρ‚Π΅Ρ‡ΠΊΠΈ памяти: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚) нСосвобоТдённыС ссылки Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ, особСнно Π² управляСмом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
  • πŸ”„ Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ: Π’ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

РСшСния:

  • πŸš€ ВыноситС вычислСния Π·Π° Ρ†ΠΈΠΊΠ»: НапримСр, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π±Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ запросом, Π° Π½Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠΉΡ‚Π΅ Π² Ρ†ΠΈΠΊΠ»Π΅.
  • 🧹 ΠžΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ = НСопрСдСлСно; послС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.
  • πŸ”— Π Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹: ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ порциями ΠΏΠΎ 100–500 строк с ΠŸΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ(0) для освобоТдСния рСсурсов.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° для 10 000 строк

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ дСмонстрируСт Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ, Π½ΠΎ Π½Π΅ являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ. ВсСгда тСстируйтС Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…!

ΠŸΠ°Ρ‡ΠΊΠ° = 500;

ВсСгоБтрок = Π’Π°Π±Π»ΠΈΡ†Π°.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ;

Для ΠΠΎΠΌΠ΅Ρ€ΠŸΠ°Ρ‡ΠΊΠΈ = 0 По ВсСгоБтрок / ΠŸΠ°Ρ‡ΠΊΠ° Π¦ΠΈΠΊΠ»

Начало = ΠΠΎΠΌΠ΅Ρ€ΠŸΠ°Ρ‡ΠΊΠΈ * ΠŸΠ°Ρ‡ΠΊΠ°;

ΠšΠΎΠ½Π΅Ρ† = Мин(Начало + ΠŸΠ°Ρ‡ΠΊΠ° - 1, ВсСгоБтрок - 1);

Для Инд = Начало По ΠšΠΎΠ½Π΅Ρ† Π¦ΠΈΠΊΠ»

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π’Π°Π±Π»ΠΈΡ†Π°[Инд];

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° строки

ΠŸΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ(0); // ОсвобоТдаСм рСсурсы

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

πŸ’‘

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с запросами Π² Ρ†ΠΈΠΊΠ»Π΅ Для КаТдого всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ количСства строк (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°ΡΠŸΠΎΠ·ΠΈΡ†ΠΈΡ, ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠ·ΠΊΠΈ всСх Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ.

4. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки с этой конструкциСй. Π’ΠΎΡ‚ Ρ‚ΠΎΠΏ-5 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ:

  1. ИзмСнСниС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅:

    Если ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· массива Π²Π½ΡƒΡ‚Ρ€ΠΈ Для КаТдого, Ρ†ΠΈΠΊΠ» пропустит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ индСксы сдвинутся). РСшСниС: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±Ρ…ΠΎΠ΄ ΠΈΠ»ΠΈ собирайтС элСмСнты для удалСния Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ список.

    УдаляСмыС = Новый БписокЗначСний;
    

    Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Массив Π¦ΠΈΠΊΠ»

    Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ="Π£Π΄Π°Π»ΠΈΡ‚ΡŒ" Π’ΠΎΠ³Π΄Π°

    УдаляСмыС.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

    ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

    ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

    Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из УдаляСмыС Π¦ΠΈΠΊΠ»

    Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(Массив.ИндСкс(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚));

    ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

  2. Π Π°Π±ΠΎΡ‚Π° с НСопрСдСлёнными значСниями:

    Если коллСкция содСрТит НСопрСдСлСно, Ρ†ΠΈΠΊΠ» Π΅Π³ΠΎ пропустит. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ всС элСмСнты, провСряйтС Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

  3. Π£Ρ‚Π΅Ρ‡ΠΊΠΈ памяти Π² управляСмом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ:

    ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠžΠ±ΡŠΠ΅ΠΊΡ‚) ссылки Π½Π° Π½ΠΈΡ… ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² памяти. РСшСниС: присваивайтС НСопрСдСлСно послС использования.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄ использованиСм «Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎΒ»

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

5. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Π² управляСмом ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ

ПовСдСниС Ρ†ΠΈΠΊΠ»Π° Для КаТдого отличаСтся Π² зависимости ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΡ:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ прилоТСниСУправляСмоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΠ‘Ρ‹ΡΡ‚Ρ€Π΅Π΅ Π·Π° счёт прямого доступа ΠΊ ΠΏΠ°ΠΌΡΡ‚ΠΈΠœΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΈΠ·-Π·Π° слоя абстракции
Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈΠ£Ρ‚Π΅Ρ‡ΠΊΠΈ памяти ΠΌΠ΅Π½Π΅Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явного освобоТдСния ссылок
Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΠœΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽΠΠ²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»
ДинамичСскиС спискиНС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡΠ¦ΠΈΠΊΠ» ΠΏΠΎ динамичСскому списку Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ интСрфСйс

Π’ управляСмом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ» Для КаТдого ΠΏΠΎ динамичСскому списку (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· Ρ„ΠΎΡ€ΠΌΡ‹) ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ зависанию интСрфСйса, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ порциями. РСшСниС: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ для прСобразования Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ.

πŸ’‘

Π’ управляСмом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡ с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ статуса ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 50–100 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄Π΅Π» Ρ…ΠΎΠ΄ выполнСния.

6. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: кСйсы ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡

Рассмотрим Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Ρ… сцСнария, Π³Π΄Π΅ Для КаТдого Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡ΠΈ эффСктивно:

КСйс 1. ОбновлСниС Ρ†Π΅Π½ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ

Π—Π°Π΄Π°Ρ‡Π°: ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρ‹ всСх Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Β«Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°Β» Π½Π° 10%. РСшСниС с Ρ†ΠΈΠΊΠ»ΠΎΠΌ:

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ;

Пока Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π¦ΠΈΠΊΠ»

Если Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π­Ρ‚ΠΎΡ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ.Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ° Π’ΠΎΠ³Π΄Π°

Π¦Π΅Π½Π° = Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π¦Π΅Π½Π° * 1.1;

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π­Ρ‚ΠΎΡ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π¦Π΅Π½Π° = Π¦Π΅Π½Π°;

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π­Ρ‚ΠΎΡ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ: Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ†ΠΈΠΊΠ» Π½Π° массовоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ запросом с ΠžΠ‘ΠΠžΠ’Π˜Π’Π¬ β€” это Π² 10–100 Ρ€Π°Π· быстрСС.

КСйс 2. Поиск Π΄ΡƒΠ±Π»Π΅ΠΉ Π² справочникС

Π—Π°Π΄Π°Ρ‡Π°: Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ИНН. РСшСниС:

БписокИНН = Новый БоотвСтствиС;

Π”ΡƒΠ±Π»ΠΈ = Новый Массив;

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρ‹.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ;

Для КаТдого ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ Из Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° Π¦ΠΈΠΊΠ»

Если БписокИНН.Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ΠšΠ»ΡŽΡ‡(ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.ИНН) Π’ΠΎΠ³Π΄Π°

Π”ΡƒΠ±Π»ΠΈ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(БписокИНН[ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.ИНН] +" |" + ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.НаимСнованиС);

Π˜Π½Π°Ρ‡Π΅

БписокИНН.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.ИНН, ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.НаимСнованиС);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

КСйс 3. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅

Π—Π°Π΄Π°Ρ‡Π°: Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ ΡΡ‚Π°Ρ€ΡˆΠ΅ 30 Π΄Π½Π΅ΠΉ. РСшСниС:

ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ = Новый Π€Π°ΠΉΠ»("C:\Архив\");

Для КаТдого Π€Π°ΠΉΠ» Из ΠšΠ°Ρ‚Π°Π»ΠΎΠ³.НайтиЀайлы(".") Π¦ΠΈΠΊΠ»

Если (ВСкущаяДата - Π€Π°ΠΉΠ».Π”Π°Ρ‚Π°ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ) > 30 Π’ΠΎΠ³Π΄Π°

Архив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΠ€Π°ΠΉΠ»(Π€Π°ΠΉΠ».ПолноСИмя);

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

πŸ’‘

Для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ всСгда провСряйтС сущСствованиС Ρ„Π°ΠΉΠ»Π° (Π€Π°ΠΉΠ».БущСствуСт) ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ β€” внСшниС рСсурсы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π²ΠΎ врСмя выполнСния.

7. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

Π¦ΠΈΠΊΠ» Для КаТдого Π½Π΅ всСгда ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½. Рассмотрим Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹:

  • πŸ” Запросы: Для массовой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅, Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°) всСгда ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык запросов. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
    Запрос = Новый Запрос;
    

    Запрос.ВСкст ="ВЫБРАВЬ ΠŸΠ•Π Π’Π«Π• 1000 НомСнклатура.Бсылка КАК Бсылка Π˜Π— Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура КАК НомСнклатура";

    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ;

  • πŸ“Š Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: Π’ Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (8.3.14+) появились ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ.Π”Π»ΡΠšΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈ ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ.Найти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ:
    Массив.Π”Π»ΡΠšΠ°ΠΆΠ΄ΠΎΠ³ΠΎ(Ѐункция(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ = Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ * 2; ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ);
  • ⚑ ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: Для CPU-Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, расчёт Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ задания ΠΈΠ»ΠΈ РаспрСдСлённыС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π±Π°Π·Ρ‹.

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€Π°:

  • πŸ“Œ МСнСС 1 000 элСмСнтов β†’ Для КаТдого.
  • πŸ“Œ 1 000–10 000 элСмСнтов β†’ Запрос ΠΈΠ»ΠΈ пакСтная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.
  • πŸ“Œ Π‘ΠΎΠ»Π΅Π΅ 10 000 элСмСнтов β†’ Запрос с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅.
πŸ’‘

Π’ 1Π‘:EDT (Eclipse) для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнный ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ. Он ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ тратится Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ ΠΊΠΎΠ΄.

FAQ: ЧастыС вопросы ΠΏΠΎ Ρ†ΠΈΠΊΠ»Ρƒ «Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎΒ»

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Для КаТдого для ΠΎΠ±Ρ…ΠΎΠ΄Π° свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°?

НСт, для этого ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Ρ†ΠΈΠΊΠ» Для КаТдого Π˜ΠΌΡΠ‘Π²ΠΎΠΉΡΡ‚Π²Π° Из ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅.Бвойства Π¦ΠΈΠΊΠ» ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Π²ΠΎΠΉΡΡ‚Π²Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΠžΠ±ΡŠΠ΅ΠΊΡ‚;

Для КаТдого Бвойство Из ΠžΠ±ΡŠΠ΅ΠΊΡ‚.ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅.Бвойства Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Бвойство.Имя);

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ†ΠΈΠΊΠ» Для КаТдого Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ?

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ доступ ΠΊ строкам Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ индСксу. Если Π½ΡƒΠΆΠ½ΠΎ часто ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ строкам ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² массив с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π’Π°Π±Π»ΠΈΡ†Π°.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠšΠΎΠ»ΠΎΠ½ΠΊΡƒ.

Как ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° досрочно?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ:

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Массив Π¦ΠΈΠΊΠ»

Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ="Π‘Ρ‚ΠΎΠΏ" Π’ΠΎΠ³Π΄Π°

ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Для Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ уровня. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ всС ΡƒΡ€ΠΎΠ²Π½ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ (Ссли Ρ†ΠΈΠΊΠ» Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) ΠΈΠ»ΠΈ Ρ„Π»Π°Π³:

ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒΠ’ΡΠ΅ = Π›ΠΎΠΆΡŒ;

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚1 Из Массив1 Π¦ΠΈΠΊΠ»

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚2 Из Массив2 Π¦ΠΈΠΊΠ»

Если УсловиС Π’ΠΎΠ³Π΄Π°

ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒΠ’ΡΠ΅ = Π˜ΡΡ‚ΠΈΠ½Π°;

ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Если ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒΠ’ΡΠ΅ Π’ΠΎΠ³Π΄Π°

ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ;

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

МоТно Π»ΠΈ Π² Ρ†ΠΈΠΊΠ»Π΅ Для КаТдого ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ элСмСнты ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ?

Π”Π°, Π½ΠΎ с ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ:

  • Для массивов ΠΈ списков Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ измСнСния ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ сразу.
  • Для Ρ‚Π°Π±Π»ΠΈΡ† Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ измСнСния ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° (ΠΈΠ·-Π·Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ).
  • Для Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запроса измСнСния Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ β€” Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ измСнСния:

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π’Π°Π±Π»ΠΈΡ†Π° Π¦ΠΈΠΊΠ»

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π¦Π΅Π½Π° = Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π¦Π΅Π½Π° * 1.1; // ИзмСнСниС примСнится

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Как ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π²Ρ‚ΠΎΡ€ΡƒΡŽ строку Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ счётчик ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ чётности:

Π‘Ρ‡Ρ‘Ρ‚Ρ‡ΠΈΠΊ = 0;

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π’Π°Π±Π»ΠΈΡ†Π° Π¦ΠΈΠΊΠ»

Π‘Ρ‡Ρ‘Ρ‚Ρ‡ΠΈΠΊ = Π‘Ρ‡Ρ‘Ρ‚Ρ‡ΠΈΠΊ + 1;

Если Π‘Ρ‡Ρ‘Ρ‚Ρ‡ΠΈΠΊ % 2 = 0 Π’ΠΎΠ³Π΄Π°

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‡Ρ‘Ρ‚Π½ΠΎΠΉ строки

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Или Ρ‡Π΅Ρ€Π΅Π· индСксы:

Для Инд = 1 По Π’Π°Π±Π»ΠΈΡ†Π°.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π¨Π°Π³ 2 Π¦ΠΈΠΊΠ»

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π’Π°Π±Π»ΠΈΡ†Π°[Инд];

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;