Вводная Ρ‡Π°ΡΡ‚ΡŒ: спСцифика клиСнтской срСды

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ программиста Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ понимания Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСром ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. Когда Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, справочник ΠΈΠ»ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ сталкиваСтся с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ…ΠΎΠ΄Π° Π΄Π΅Ρ€Π΅Π²Π°. На сСрвСрС это Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ стандартными срСдствами запросов, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ситуация ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ мСняСтся. Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΎ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ значСниями, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ прилоТСния, ΠΈ любой Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ зависанию интСрфСйса.

Основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ клиСнтский контСкст Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, блокируя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Π²ΠΎ врСмя выполнСния Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ рСкурсивно ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΌΡƒ Π΄Π΅Ρ€Π΅Π²Ρƒ с тысячами ΡƒΠ·Π»ΠΎΠ², ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ Β«Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ экран» ΠΈΠ»ΠΈ сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹Π±ΠΎΡ€ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠ±Ρ…ΠΎΠ΄Π° β€” это Π½Π΅ просто вопрос стиля ΠΊΠΎΠ΄Π°, Π° вопрос ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ отзывчивости систСмы. НСобходимо ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ограничСния ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивныС инструмСнты.

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

РСкурсивный ΠΎΠ±Ρ…ΠΎΠ΄: классика ΠΈ Π΅Ρ‘ ограничСния

Π‘Π°ΠΌΡ‹ΠΉ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный способ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ β€” это рСкурсия. Π’Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сама сСбя для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ элСмСнта. Π’ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ это выглядит элСгантно: ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½ ΠΈ Π»Π΅Π³ΠΊΠΎ читаСтся. Однако Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, особСнно Π² срСдС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8, глубокая рСкурсия ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ пСрСполнСния стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‡Π°Ρ‰Π΅, Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° процСсс ΠΈΠ·-Π·Π° Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° созданиС Π½ΠΎΠ²Ρ‹Ρ… контСкстов выполнСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° Π”Π΅Ρ€Π΅Π²ΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π”Π΅Ρ€Π΅Π²ΠΎΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… рСкурсивный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ аккуратности. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ влоТСнности ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти. Если Π³Π»ΡƒΠ±ΠΈΠ½Π° Π΄Π΅Ρ€Π΅Π²Π° Π½Π΅Π²Π΅Π»ΠΈΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 3-5 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ), рСкурсия Π²ΠΏΠΎΠ»Π½Π΅ допустима. Но Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΌΠΈ структурами ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌΠΈ списками, этот ΠΌΠ΅Ρ‚ΠΎΠ΄ становится нСэффСктивным.

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

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΠ£Π·Π΅Π»Π Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎ(Π£Π·Π΅Π»)

// ВыполняСм ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΡƒΠ·Π»ΠΎΠΌ

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅(Π£Π·Π΅Π»);

// РСкурсивный Π²Ρ‹Π·ΠΎΠ² для всСх Π΄Π΅Ρ‚Π΅ΠΉ

Для КаТдого Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉΠ£Π·Π΅Π» Из Π£Π·Π΅Π».Π”Π΅Ρ‚ΠΈ Π¦ΠΈΠΊΠ»

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΠ£Π·Π΅Π»Π Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎ(Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉΠ£Π·Π΅Π»);

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

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании рСкурсии Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ слСдитС Π·Π° Π³Π»ΡƒΠ±ΠΈΠ½ΠΎΠΉ влоТСнности. Π“Π»ΡƒΠ±ΠΈΠ½Π° Π±ΠΎΠ»Π΅Π΅ 1000 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСпрСдсказуСмому повСдСнию ΠΈΠ»ΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠΌΡƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚ΠΎΠ½ΠΊΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… конфигурациях.

πŸ’‘

Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ всСгда плоскоС (максимум 2 уровня), рСкурсия ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ простой Ρ†ΠΈΠΊΠ» β€” это быстрСС ΠΈ понятнСС для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΠΎΠ΄Π°.

Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΎΠ±Ρ…ΠΎΠ΄ с использованиСм стСка

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ограничСния Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² профСссионалы часто пСрСходят ΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ. Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² использовании собствСнной структуры Π΄Π°Π½Π½Ρ‹Ρ… β€” стСка (LIFO β€” Last In, First Out). Π’Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ управляСтС списком ΡƒΠ·Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдстоит ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, помСщая Ρ‚ΡƒΠ΄Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты ΠΈ извлСкая ΠΈΡ… ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ риск пСрСполнСния стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

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

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

  • πŸš€ Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ риска пСрСполнСния стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² нСзависимо ΠΎΡ‚ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ Π΄Π΅Ρ€Π΅Π²Π°.
  • ⏱️ Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ: Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ°ΡƒΠ·Ρ‹, возобновлСния ΠΈΠ»ΠΈ прСрывания ΠΎΠ±Ρ…ΠΎΠ΄Π° Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
  • 🧩 ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ: Π―Π²Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ порядком ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡƒΠ·Π»ΠΎΠ² (прямой ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ).
πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±Ρ…ΠΎΠ΄Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Волько рСкурсия
Волько стСк (Ρ†ΠΈΠΊΠ»)
Зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ запросы Π½Π° сСрвСрС

Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π”Π΅Ρ€Π΅Π²ΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

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

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

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

ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π§ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ Риск пСрСполнСния
РСкурсия БрСдняя Высокая Высокий
Π‘Ρ‚Π΅ΠΊ (Массив) Высокая БрСдняя Низкий
Π‘Ρ‚Π΅ΠΊ (БписокЗначСний) Высокая БрСдняя Низкий
ВстроСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Зависит Высокая Низкий

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ИзмСнСниС структуры Π΄Π΅Ρ€Π΅Π²Π° (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡƒΠ·Π»ΠΎΠ²) Π²ΠΎ врСмя прямого ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π”Π΅Ρ‚ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкС выполнСния. ВсСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ копию ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с индСксами, Ссли модификация Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Π°.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с большими объСмами

Когда объСм Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ нСсколько тысяч строк, Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‚ΠΎΡ€ΠΌΠ°ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ интСрфСйса. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ асинхронной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° части. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ОТиданиС (Π² управляСмых Ρ„ΠΎΡ€ΠΌΠ°Ρ…) ΠΈΠ»ΠΈ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ задания, хотя Π½Π° чистом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ возмоТности ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹. Частичная отрисовка ΠΈΠ»ΠΈ отлоТСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π²Π΅Ρ‚ΠΎΠΊ Π΄Π΅Ρ€Π΅Π²Π° β€” Π»ΡƒΡ‡ΡˆΠΈΠΉ способ Π±ΠΎΡ€ΡŒΠ±Ρ‹ с этим.

Одним ΠΈΠ· эффСктивных ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ² являСтся «лСнивая» Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. НС ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ всС Π΄Π΅Ρ€Π΅Π²ΠΎ сразу, Ссли это Π½Π΅ трСбуСтся для Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ отобраТСния. ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΈΠ΄ΠΈΠΌΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ‚Ρƒ Π²Π΅Ρ‚ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ раскрыл ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. Если ΠΆΠ΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΎΠ±Ρ…ΠΎΠ΄ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для расчСтов, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠΎ 100-500 ΡƒΠ·Π»ΠΎΠ² ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ… с нСбольшой Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ, позволяя систСмС ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ интСрфСйс ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ.

Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° использованиС индСксов ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰. Если Π² процСссС ΠΎΠ±Ρ…ΠΎΠ΄Π° Π²Ρ‹ часто ΠΈΡ‰Π΅Ρ‚Π΅ ΡƒΠ·Π»Ρ‹ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ, создайтС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ индСкс (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, БоотвСтствиС), Ρ‡Ρ‚ΠΎΠ±Ρ‹ поиск Π·Π°Π½ΠΈΠΌΠ°Π» O(1) вмСсто O(N). Π­Ρ‚ΠΎ особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈ слоТных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… сопоставлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… источников Π²Π½ΡƒΡ‚Ρ€ΠΈ клиСнтского прилоТСния.

Π‘Π΅ΠΊΡ€Π΅Ρ‚ быстрой Ρ€Π°Π±ΠΎΡ‚Ρ‹ с большими Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ

НС Π·Π°Π³Ρ€ΡƒΠΆΠ°ΠΉΡ‚Π΅ всё Π΄Π΅Ρ€Π΅Π²ΠΎ сразу. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ свойство "Π’ΠΎΠ»ΡŒΠΊΠΎΠ”Π΅Ρ‚ΠΈ" ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΄Π΅Ρ€Π΅Π²ΠΎ частями ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости.

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

ЧастыС ошибки ΠΈ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹

Новички часто ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΡ‹Ρ‚Π°ΡΡΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€. Π’ 1Π‘ это часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС Β«ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Π±Ρ‹Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°Β» ΠΈΠ»ΠΈ ΠΊ пропуску элСмСнтов. ВсСгда ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Ссли Π²Ρ‹ мСняСтС состав Π΄Π΅Ρ‚Π΅ΠΉ ΡƒΠ·Π»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ копию списка Π΄Π΅Ρ‚Π΅ΠΉ для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ спасСт вас ΠΎΡ‚ мноТСства часов ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ распространСнный Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ β€” избыточная рСкурсия для поиска ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта. Если ваша Ρ†Π΅Π»ΡŒ β€” Π½Π°ΠΉΡ‚ΠΈ ΡƒΠ·Π΅Π» с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, Π½Π΅Ρ‚ смысла ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ всС Π΄Π΅Ρ€Π΅Π²ΠΎ, Ссли Π²Ρ‹ ΡƒΠΆΠ΅ нашли искомоС. Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π°Π½Π½ΠΈΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· рСкурсии ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»Π°. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ сам Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€Ρ…Π½ΠΈΡ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ сразу послС успСха.

  • ❌ ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Π½Π° Π»Π΅Ρ‚Ρƒ: Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡƒΠ·Π»ΠΎΠ² ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π”Π΅Ρ‚ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Для КаТдого.
  • ❌ Π›ΠΈΡˆΠ½ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹: ΠœΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ свойства ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ².
  • ❌ Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ контСкста: ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ тяТСлый ΠΎΠ±Ρ…ΠΎΠ΄ Π² событии ΠŸΡ€ΠΈΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ Π±Π΅Π· ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° прогрСсса.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ 1Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. ПовСдСниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΈ толстом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅. ВсСгда тСстируйтС ΠΊΠΎΠ΄ Π² Ρ‚ΠΎΠΉ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ваша конфигурация.

πŸ’‘

Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅: ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ врСмя Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ интСрфСйса. Если опСрация длится Π±ΠΎΠ»Π΅Π΅ 1-2 сСкунд, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π½Π΅Ρ€Π²Π½ΠΈΡ‡Π°Ρ‚ΡŒ.

Вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ (FAQ)

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ для Π΄Π΅Ρ€Π΅Π²Π° Π³Π»ΡƒΠ±ΠΈΠ½ΠΎΠΉ 5000 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ?

ΠšΡ€Π°ΠΉΠ½Π΅ Π½Π΅ рСкомСндуСтся. Π‘ высокой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка ΠΈΠ»ΠΈ сущСствСнноС Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Для Ρ‚Π°ΠΊΠΈΡ… Π³Π»ΡƒΠ±ΠΈΠ½ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ со стСком Π½Π° основС массива.

Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄, Ссли Π½ΡƒΠΆΠ½ΠΎ просто Π½Π°ΠΉΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½ элСмСнт?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„Π»Π°Π³-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСмСнт Π½Π°ΠΉΠ΄Π΅Π½, ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈΠ· рСкурсивных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Π½Π΅ обрабатывая ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚Π²ΠΈ.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±Ρ…ΠΎΠ΄ΠΎΠΌ Π”Π΅Ρ€Π΅Π²Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π”Π΅Ρ€Π΅Π²Π°ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…?

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹, Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ «тяТСлСС» ΠΈΠ·-Π·Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ свойствах. ΠžΠ±Ρ…ΠΎΠ΄ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, поэтому ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ Ρ‚Π°ΠΌ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π΅Π΅.

Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄ Π΄Π΅Ρ€Π΅Π²Π° Π½Π° сСрвСр?

Π”Π°, Ссли Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² Π±Π°Π·Π΅. Π›ΡƒΡ‡ΡˆΠ΅ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ структуру запросом Π½Π° сСрвСрС ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚. ΠšΠ»ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π° Π½Π΅ тяТСлой Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ запуском ΠΎΠ±Ρ…ΠΎΠ΄Π°

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