Facebook Instagram қолданатын Cinder бастапқы кодын шығарды

Facebook ашылды жақында пост арқылы, Cinder жобасының бастапқы кодын шығару, қайсысы CPython филиалының шанышқысы және Python бағдарламалау тілінің негізгі сілтемесі.

Шлак Instagram-ді қуаттандыру үшін Facebook-тің өндірістік инфрақұрылымында қолданылады және өнімділікті жақсарту үшін оңтайландыруларды қамтиды. Код CPython-тың негізгі ағымына дайын оңтайландыруларды көшіру мүмкіндігін талқылау және басқа CPython өнімділігін жақсарту жобаларына көмектесу үшін жарияланған.

Facebook Cinder-ті бөлек ашық бастапқы жоба ретінде қолдамайтынын айтады және код компанияның инфрақұрылымында қолданылатын формада, қосымша құжаттарсыз ұсынылған.

Синдер CPython-ға балама ретінде өзін-өзі насихаттамайды - басты даму мақсаты - CPython-тің өзін жетілдіру.

Синдер коды жеткілікті сенімді болып саналады және өндірістік ортада сыналған, бірақ егер проблемалар анықталса, оларды өздігінен шешу қажет болады, өйткені Facebook сыртқы қате туралы хабарламаларға жауап беретініне кепілдік бермейді және сұраныстарды тарту.

Сонымен қатар, Facebook қоғамдастықпен сындарлы ынтымақтастықты жоққа шығармайды және Cinder-ді одан да тез жасау туралы немесе дайындалған өзгертулерді CPython-дың негізгі жүйесіне қалай ауыстыруды тездету туралы идеяларды талқылауға дайын.

Cinder-те іске асырылатын негізгі оңтайландырулар:

  • Интернеттегі кэштеу байт-коды: Әдістің мәні - динамикалық оңтайландыруға болатын опкодты орындаудың типтік жағдайларын анықтау және сол опкодты жылдам мамандандырылған опциялармен ауыстыру.
  • Күнделікті бағалау: Дереу өңделетін асинхронды функционалды шақырулар үшін сол функциялардың нәтижесі коруотин құрмай және оқиға циклын шақырмай-ақ қайта жазылады. Facebook қолданатын және оны көп қолданатын кодта оңтайландыру шамамен 5% жеделдетуге әкеледі.
  • JIT-ті жеке әдістер мен функциялар деңгейінде таңдау: ол «-X jit» параметрімен немесе қоршаған ортаның айнымалысы PYTHONJIT = 1 арқылы қосылады және көптеген өнімділік сынақтарын 1,5-тен 4 есеге дейін жылдамдатуға мүмкіндік береді.
    JIT қосылатын функциялар тізімін профиль нәтижелері бойынша анықтауға болады. Болашақта функционалдық шақыру жиілігін ішкі талдауға негізделген JIT динамикалық компиляциясын қолдау күтілуде, бірақ инстаграмдағы іске қосу процестерінің ерекшеліктерін ескере отырып, JIT компиляциясы Facebook үшін бастапқы кезеңде де қолайлы.
    Алдымен JIT Python байт-кодын Python байт-кодына жақын, бірақ жазбаларға негізделген виртуалды машинаны емес, жазбаларға негізделген виртуалды машинаны қолдануға арналған жоғары деңгейлі аралық көрсетілімге (HIR) түрлендіреді. типтік ақпарат пен өнімділікке қатысты қосымша мәліметтерді қолданады. Содан кейін HIR Static Single Allocation (SSA) формасына ауысады және анықтамалық санау мен жадыны пайдалану деректері негізінде оңтайландыру кезеңдерінен өтеді. Нәтижесінде ассемблер тіліне жақын төменгі деңгейлі аралық ұсыныс (LIR) жасалады.
  • Модульдер үшін қатаң режим:Функционалдылық үш компоненттен тұрады: StrictModule типі. Модульдің орындалуы сол модульден тыс кодқа әсер етпейтінін анықтауға қабілетті статикалық анализатор.
  • Статикалық питон: - бұл әр түрге тән байт кодын жасау үшін типтік аннотацияларды қолданатын және JIT компиляциясы арқылы жылдамырақ жұмыс жасайтын байт-кодтың компиляторы. Кейбір сынақтарда Static Python мен JIT тіркесімі типтік CPython-қа қарағанда 7 есе тиімділікті жақсартады. Көптеген жағдайларда нәтижелер MyPyC және Cython компиляторлары қолданылғандай бағаланады.

Finalmente егер сіз Cinder кодын алуға қызығушылық танытсаңыз немесе бұл туралы көбірек білуге ​​болады, сіз кеңес ала аласыз толығырақ келесі сілтемеде.


Мақаланың мазмұны біздің ұстанымдарымызды ұстанады редакторлық этика. Қате туралы хабарлау үшін нұқыңыз Мұнда.

Бірінші болып пікір айтыңыз

Пікіріңізді қалдырыңыз

Сіздің электрондық пошта мекен-жайы емес жарияланады. Міндетті өрістер таңбаланған *

*

*

  1. Деректерге жауапты: Мигель Анхель Гатан
  2. Деректердің мақсаты: СПАМ-ны басқару, түсініктемелерді басқару.
  3. Заңдылық: Сіздің келісіміңіз
  4. Деректер туралы ақпарат: заңды міндеттемелерді қоспағанда, деректер үшінші тұлғаларға жіберілмейді.
  5. Деректерді сақтау: Occentus Networks (ЕО) орналастырған мәліметтер базасы
  6. Құқықтар: Сіз кез-келген уақытта ақпаратты шектей, қалпына келтіре және жоя аласыз.