Python 2.7-ийн дэмжлэг дууссанаас гадна өөр нэг чухал өөрчлөлт нь оруулсан явдал юм
Одоо байгаа кодын профайлыг хийснээр тооцооллын ихэнх цагийг use_reduce болон catpkgsplit функцуудыг давтагдах аргументуудын хамт дуудахад зарцуулсан болохыг харуулсан (жишээлбэл, catpkgsplit функцийг 1-5 сая удаа дуудсан). Үйлдлийг хурдасгахын тулд эдгээр функцүүдийн үр дүнг толь бичиг ашиглан кэшлэхэд ашигласан. Кэш хадгалах хамгийн сайн сонголт бол суулгасан lru_cache функц байсан боловч энэ нь зөвхөн 3.2-с эхлэн Python хувилбаруудад боломжтой байсан. Өмнөх хувилбаруудтай нийцүүлэхийн тулд lru_cache-г солихын тулд stub нэмсэн боловч Portage 2.7 дээрх Python 3.0-ийн дэмжлэгийг зогсоох шийдвэр гаргасан нь даалгаврыг ихээхэн хялбарчилж, энэ давхаргагүйгээр хийх боломжтой болгосон.
Кэшийг ашигласнаар ThinkPad X220 зөөврийн компьютер дээрх "emerge -uDvpU —with-bdeps=y @world" үйлдлийн гүйцэтгэлийн хугацааг 5 минут 20 секундээс 3 минут 16 секунд (63%) болгон бууруулсан. Бусад системүүдийн туршилтууд гүйцэтгэлийн хамгийн багадаа 48% -иар өссөнийг харуулсан.
Өөрчлөлтийг бэлтгэсэн хөгжүүлэгч мөн C++ эсвэл Rust хэл дээр хамаарлыг шийдвэрлэх кодын прототипийг хэрэгжүүлэхийг оролдсон боловч их хэмжээний кодыг шилжүүлэх шаардлагатай байсан тул даалгавар нь хэтэрхий хэцүү байсан бөгөөд үр дүн нь хүчин чармайлт гаргахад үнэ цэнэтэй байх нь эргэлзээтэй байсан. .
Эх сурвалж: opennet.ru