Мазмунга өтүү

Өндүрүмдүүлүктү оптималдаштыруу

Сабактын башталышы

Өндүрүмдүүлүктү оптималдаштыруу

Алгач ченеп ал, бир нерсени гана өзгөрт жана кайра чыгарыла турган сандарга гана ишен

Негизги идея: Ылдам код интуиция менен жазылбайт - аны ченейт. Заманбап процессор, анын эстутум иерархиясы жана оптималдаштыруучу компилятор - жүрүм-турумун баштапкы кодду окуп болжолдоо чын эле кыйын болгон система. Кесипкөй цикл мындай: убакыт кайда кеткенин табуу үчүн профилдөө, гипотеза коюу, бир так өзгөртүү киргизүү жана пайдасын ырастоо үчүн чынчыл ченөө. Бул темадагы бардыгы ушул циклге кызмат кылат.
Аягында сиз:
  • болжолдоонун ордуна чыныгы ысык чекиттерди табуу үчүн профайлерди колдоно аласыз,
  • эстутум иерархиясы жөнүндө ой жүгүртүп, кэшке ыңгайлуу маалымат жайгаштырууну жаза аласыз,
  • шилтемелер, жылдыруу, reserve жана көрүнүштөр менен ашыкча көчүрмөлөрдү жоё аласыз,
  • инлайнинг жана компоновка учурундагы оптималдаштыруу чын эле эмне кыларын түшүнөсүз,
  • оптимизаторду аман өтүүчү чынчыл микробенчмарктарды жаза аласыз.

1. Оптималдаштыруудан мурун профилдө

Өндүрүмдүүлүк боюнча иштеги эң кымбат ката - эч качан жай болбогон кодду оптималдаштыруу. Программалар убактысынын көбүн коддун кичине бөлүгүндө өткөрөт, жана бул бөлүк көбүнчө тажрыйбалуу инженер күткөн жерде эмес. Профайлер убакыт кайда чын эле кетээрин ченейт, ошондо сиз маанилүү бөлүктү оңдойсуз.

Профайлердин эки үй-бүлөсү кеңири таралган:

  • Сэмплдөөчү профайлерлер (perf, VTune, Instruments) программаны секундасына көп жолу үзгүлтүккө учуратып, чакыруу стегин жазат. Алар дээрлик кошумча жүк бербей, ысык чекиттердин статистикалык сүрөтүн берет. Чыныгы жүктү биринчи караш үчүн эң сонун.
  • Инструменттөөчү профайлерлер (callgrind, gprof) ар бир функциянын тегерегине эсептөө кодун коёт. Алар так чакыруу санын берет, бирок программаны бир нече эсе жайлатат жана кичинекей функцияларды бурмалайт.

Оптималдаштырууну арифметика да чектейт. Амдал мыйзамы айтат: эгер убакыттын p үлүшү тездетилген бөлүктө кетсе жана сиз аны чексиз ылдам кылсаңыз, бүт программа эң көп дегенде 1 / (1 - p) эсе ылдамдайт. Эгер функцияда убакыттын 10% болсо, аны идеалдаштыруу жалпысынан 10% дан ашык үнөмдөбөйт - демек чоң p ди табуу үчүн профилдеңиз, калганын елебеңиз.

Эреже: мурун/кийин ченөөсүз оптималдаштыруу коммити жок. "Ылдамыраак болушу керек" - бул гипотеза, натыйжа эмес.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө