ለ Python 2.7 ድጋፍ መጨረሻ በተጨማሪ ሌላ ትልቅ ለውጥ ማካተት ነበር
ያለውን ኮድ መግለጽ እንደሚያሳየው አብዛኛው የስሌት ጊዜ የሚጠፋው use_reduce እና catpkgsplit ተግባራትን በተደጋገሙ የክርክር ስብስብ (ለምሳሌ የ catpkgsplit ተግባር ከ1 እስከ 5 ሚሊዮን ጊዜ ተጠርቷል) ነው። መዝገበ ቃላትን በመጠቀም የእነዚህን ተግባራት ውጤት መሸጎጫ ለማፋጠን ተተግብሯል። የ lru_cache አብሮገነብ ተግባር ለመሸጎጫ ማከማቻ በጣም ጥሩ ነበር ነገር ግን ከ3.2 ጀምሮ በ Python ልቀቶች ላይ ብቻ ነበር የሚገኘው። ከቀደምት ስሪቶች ጋር ተኳሃኝነትን ለማግኘት lru_cacheን ለመተካት አንድ ስቱብ ታክሏል ነገር ግን በ Portage 2.7 ውስጥ ለ Python 3.0 ድጋፍን ለማቆም መወሰኑ ተግባሩን በእጅጉ ያቃልለው እና ይህንን ንብርብር ያስወግዳል።
የመሸጎጫው አጠቃቀም በ ThinkPad X220 ላፕቶፕ ላይ ያለውን የ"emerge -uDvpU --with-bdeps=y @world" የስራ ጊዜን ከ5 ደቂቃ ከ20 ሰከንድ ወደ 3 ደቂቃ ከ16 ሰከንድ (63%) ቀንሶታል። በሌሎች ስርዓቶች ላይ የተደረጉ ሙከራዎች ቢያንስ የ 48% አፈፃፀም አሳይተዋል.
ለውጡን ያዘጋጀው ገንቢም የጥገኝነት መፍታት ኮድን በC++ ወይም Rust ለመቅረጽ ሞክሯል፣ ነገር ግን ከፍተኛ መጠን ያለው ኮድ ማስተላለፍ ስለሚያስፈልገው ስራው በጣም ከባድ ሆኖ ተገኝቷል፣ እና በተመሳሳይ ጊዜ፣ ይህ አጠራጣሪ ነበር። ውጤቱ ጥረቱን ያስቆማል።
ምንጭ: opennet.ru