Они предлажу компајлер за Питхон који користи технику Цопи-анд-Патцх

Питхон лого

Питхон је програмски језик високог нивоа.

Недавно један од главних ЦПитхон програмери су представили нови ЈИТ компајлер за Питхон користећи технику Цопи-анд-Патцх, која је недавна и иновативна техника компилације да истиче се брзином, лакоћом одржавања и његову потпуну интеграцију са постојећим тумачем.

Копирај и закрпи заснива се на коришћењу унапред дефинисане библиотеке фрагмената бинарног кода познатих као "шаблоне" за излаз оптимизованог машинског кода. Ови шаблони су унапред изграђене имплементације АСТ (Апстрактно дрво синтаксе) чворова или бајтних опкодова који садрже недостајуће вредности, као што су непосредни литерали, помаци променљивих стека и циљеви гранања и позива.

Омогућава вам да систематски генеришете варијанте бинарних шаблона у Ц++ на чист и чист начин. Користи инфраструктуру компајлера Цланг+ЛЛВМ да сакријете специфичне детаље платформе на ниском нивоу.

Током рада, оптимизација и генерисање кода постају једноставнији задацил Пронађите табелу са подацима која садржи одговарајући шаблон, креирајте његову инстанцу и поставите је на жељену позицију користећи процес Цопи-анд-Патцх, прилагођавајући све недостајуће вредности које ће бити закрпе током извршавања.

Гледајући из једноставније перспективе, састоји се од компајлирања (копирања) постојећег изворног кода и прилагођавања недостајућих вредности или специфичних модификација (закрпа).

Цопи-анд-Патцх у великој мери олакшава аутоматску конверзију преводиоца написаног у језику Ц у ЈИТ компајлеру, елиминишући потребу за одвојеним креирањем логике генерисања кода и репрезентација компилације. Коришћењем уобичајеног генератора кода, исправљање грешака у интерпретатору резултира аутоматским решавањем истих проблема у ЈИТ-у.

Приступ Цопи-анд-Патцх ослања се на сличност између премештања кода у меморију Када линкер учитава објектне датотеке и замена машинских инструкција уместо бајткода у ЈИТ-у су слични задаци. Током извршавања програма, лНаведене су инструкције бајткода које генерише тумач, и унапред компајлирани машински код се затим копира за сваку инструкцију у извршну меморијску област овог упутства Они су динамички модификовани да замене обрађене податке у реалном времену. У случају ЈИТ-а, унапред дефинисани шаблони се копирају из већ компајлираних функција и замењују потребним вредностима, као што су аргументи и константе).

Имплементација ЈИТ-а са техником Цопи-анд-Патцх подразумева састављање објектне датотеке у ЕЛФ формату иликористећи ЛЛВМ. Ова спорна датотека садржи информације о бајт кодовима инструкција и детаље о неопходној замени података. Током извршавања, ЈИТ замењује бајткод инструкције које генерише интерпретатор са приказима машинског кода, истовремено прилагођавајући податке неопходне за прорачуне. Иако имплементација ЈИТ-а захтева ЛЛВМ као зависност током компилације, компоненте времена извршавања нису везане за спољне зависности, смањујући на приближно 300 редова руком писаног Ц кода и 3000 редова генерисаног Ц кода.

У погледу перформанси, предложени ЈИТ са техником Цопи-анд-Патцх представља значајна побољшања у поређењу са традиционалним приступима. У поређењу са конвенционалним ЈИТ-овима (ЛЛВМ -О0), истиче се 100 пута бржим генерисањем кода и резултујућим кодом који Ефикаснији је за 15%. У области компилације ВебАссембли-а (Лифтофф), нови ЈИТ демонстрира 5к брже генерисање кода, а резултујући код ради 50% брже.

У поређењу са оптимизацијским ЈИТ-ом као што је ЛуаЈИТ, који користи ручно писани асемблерски код, предложени ЈИТ је био бољи у 13 од 44 теста. Иако је у просеку заостајао у перформансама за 35%, неопходно је нагласити да је ова разлика надокнађена значајним поједностављењем одржавања и смањењем сложености имплементације. Ова равнотежа између перформанси и ефикасности у управљању кодом позиционира предложени ЈИТ као атрактивну алтернативу у окружењу перформанси.

Финалмени ако сте заинтересовани да сазнате више о томе, можете проверити детаље У следећем линку.


Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.