Лоиҳаи Gentoo системаи идоракунии бастаи Portage 3.0 -ро ҷорӣ кард

Муътадил гардид нашри системаи идоракунии бастаҳо Portage 3.0, дар тақсимот истифода мешавад Gentoo Linux. Риштаи пешниҳодшуда кори дарозмуддатро оид ба гузариш ба Python 3 ва анҷоми дастгирии Python 2.7 ҷамъбаст кард.

Ба ғайр аз анҷоми дастгирӣ барои Python 2.7, дигар тағйироти муҳим ин ворид кардани он буд оптимизатсияҳо, ки ин имкон дод, ки хисобхои вобаста ба муайян кардани вобастагихо 50—60 фоиз тезонда шавад. Ҷолиб он аст, ки баъзе таҳиягарон пешниҳод карданд, ки рамзи ҳалли вобастагӣ дар C/C++ ё Go аз нав навишта шаванд, то кори онро суръат бахшанд, аммо онҳо тавонистанд мушкилоти мавҷударо бо кӯшиши кам ҳал кунанд.

Профили рамзи мавҷуда нишон дод, ки бештари вақти ҳисоб барои даъват кардани функсияҳои use_reduce ва catpkgsplit бо маҷмӯи такрории аргументҳо сарф шудааст (масалан, функсияи catpkgsplit аз 1 то 5 миллион маротиба даъват карда шуд). Барои суръат бахшидан ба кор, кэшкунии натиҷаҳои ин функсияҳо бо истифода аз луғатҳо истифода мешуд. Беҳтарин вариант барои нигаҳдории кэш функсияи дарунсохташудаи lru_cache буд, аммо он танҳо дар версияҳои Python аз 3.2 сар карда дастрас буд. Барои мувофиқат бо версияҳои қаблӣ, барои иваз кардани lru_cache ноустувор илова карда шуд, аммо қарор дар бораи қатъ кардани дастгирии Python 2.7 дар Portage 3.0 вазифаро хеле содда кард ва имкон дод, ки бидуни ин қабат иҷро карда шавад.

Истифодаи кэш вақти иҷрои амалиёти "emerge -uDvpU —with-bdeps=y @world"-ро дар ноутбуки ThinkPad X220 аз 5 дақиқаю 20 сония то 3 дақиқаю 16 сония (63%) кам кард. Санҷишҳо дар дигар системаҳо афзоиши ҳадди ақал 48% -ро нишон доданд.

Таҳиягаре, ки ин тағиротро омода кардааст, инчунин кӯшиш кард, ки прототипи рамзи ҳалли вобастагӣ дар C++ ё Rust-ро татбиқ кунад, аммо ин вазифа хеле душвор буд, зеро интиқоли миқдори зиёди кодро талаб мекард ва шубҳаовар буд, ки натиҷа ба кӯшишҳо меарзад. .

Манбаъ: opennet.ru

Илова Эзоҳ