Performance — kodni tezlashtirish

Kod to’g’ri ishlashi — birinchi talab. Ikkinchisi esa maqbul tezlikda ishlashi. Ma’lumot hajmi oshgani sari sekin yozilgan kod chidab bo’lmas holga keladi. Bu darsda sekinlikning sabablarini va uni o’lchash yo’lini ko’ramiz.

Avval o’lchang, keyin tuzating

Tezlashtirishdagi asosiy qoida shu. Dasturchilar odatda kodning qaysi qismi sekin ekanini taxmin qiladi va deyarli har doim adashadi. Taxmin o’rniga o’lchash kerak.

Vaqtni time moduli bilan o’lchash mumkin:

Python

Asosiy sabab — algoritm, til emas

Boshlovchilar sekinlikni ko’pincha “Python sekin til” deb izohlaydi. Aslida katta farqni algoritm yaratadi. Quyidagi misolda bir xil vazifa ikki xil usulda bajariladi:

Python

Ikkala usul ham bir xil javob beradi, lekin to’plam ancha tez. Sabab: ro’yxatda qidirish elementlarni birma-bir tekshiradi, to’plamda esa qiymat to’g’ridan- to’g’ri topiladi.

Tur tanlash tezlikka ta’sir qiladi

Har bir tur o’z vazifasiga moslashtirilgan:

Amal Ro’yxat To’plam / Lug’at
x in ... qidirish sekin tez
Oxiriga qo’shish tez tez
Boshiga qo’shish sekin
Tartib saqlanishi ro’yxatdagidek emas

Ya’ni “qidirish ko’p bo’ladigan” joyda ro’yxat o’rniga to’plam yoki lug’at tanlash — eng arzon tezlashtirish usuli.

Satrlarni birlashtirish

Yana bir keng tarqalgan sekinlik manbai — satrlarni + bilan qo’shish:

Python

Sabab o’tgan darsda ko’rilgan: satr o’zgarmas tur. Har + amalida yangi satr yaratiladi va eskisi tashlanadi. join() esa hammasini bir marta birlashtiradi.

Ro’yxat generatorlari

Sikl o’rniga ro’yxat generatori odatda tezroq va o’qishga qulayroq:

Python

Tezlashtirish tartibi

Amaliy ish tartibi quyidagicha:

  1. Ishlaydigan kod yozing. Tezlik keyingi masala.
  2. O’lchang. Qaysi qism sekin ekanini aniqlang.
  3. Algoritmni ko’rib chiqing. Eng katta yutuq shu yerda.
  4. Mos turni tanlang. Qidirish ko’p bo’lsa — to’plam yoki lug’at.
  5. Qayta o’lchang. Yaxshilanganini tasdiqlang.

Amaliy mashq

Avval o’lchang:

  1. 100000 elementli ro’yxat yarating;
  2. in operatori bilan oxirgi elementni qidiring va time.perf_counter() bilan vaqtini o’lchang;
  3. xuddi shu ma’lumotni set() ga o’tkazib, qidiruvni takrorlang;
  4. ikki vaqtni solishtiring;
  5. satrlarni += bilan 10000 marta birlashtiring, so’ng join() bilan qiling va o’lchang.

Qaysi o’zgarish kattaroq farq berdi — tur tanlashmi yoki usulmi?

Qisqacha xulosa

  • Taxmin qilmang — o’lchang: time.perf_counter().
  • Eng katta yutuq algoritmni o’zgartirishdan keladi, tilni almashtirishdan emas.
  • Qidirish ko’p bo’lsa, ro’yxat o’rniga to’plam yoki lug’at ishlating.
  • Satrlarni + emas, "".join() bilan birlashtiring.
  • Ro’yxat generatori oddiy sikldan tezroq.
  • Avval to’g’ri va sodda yozing; tezlashtirish — o’lchovdan keyingi qadam.

Keyingi darsda loyiha strukturasi — kod kattalashganda fayllarni qanday tartibga solish kerakligini ko’ramiz.

Bu dars foydali bo'ldimi?

marta ko'rildi