Уақыт компиляциясы - Ahead-of-time compilation

Информатикада, мерзімінен бұрын құрастыру (AOT компиляциясы) әрекеті болып табылады құрастыру жоғары деңгей бағдарламалау тілі сияқты C немесе C ++ немесе an аралық өкілдік сияқты Java байт коды немесе .NET Framework Жалпы орта тіл (CIL) коды, жергілікті (жүйеге тәуелді) машина коды нәтижесінде алынған екілік файл өздігінен орындай алатындай етіп.

AOT машинадағы сияқты оңтайландырылған кодты шығарады стандартты жергілікті компилятор. Айырмашылық мынада: AOT байт коды қолданыстағы виртуалды машина (VM) ішіне машина коды.

Жұмыс уақыты қысқарды

А бар кейбір бағдарламалау тілдері басқарылатын код аралық ұсынуға жинақталатын жұмыс уақыты, пайдалану дәл уақытында (JIT) құрастыру. Бұл, қысқаша, аралық кодты орындау кезінде аралық кодты жергілікті код үшін машиналық кодқа жинақтайды, бұл қолданбаның жұмысын баяулатуы мүмкін. Уақыттың алдындағы компиляция орындау кезінде емес, орындалудың алдында болу арқылы бұл қадамның қажеттілігін жояды.

Уақытынан бұрын құрастыру динамикалық терілген тілдерді жергілікті машиналық кодқа немесе басқа статикалық VM байт-кодына тек шектеулі жағдайларда ғана енгізу мүмкін.[дәйексөз қажет ] Мысалы, тілге арналған High Performance Erlang Project (HiPE) AOT компиляторы Эрланг мұны статикалық типті қалпына келтірудің озық әдістері мен типтік алыпсатарлықтың арқасында жасай алады.

Толық AOT компиляциясы бар бағдарламалар мен кітапханаларда көптеген жағдайларда а-ның пайдалы бөлшегін тастауға болады жұмыс уақыты ортасы Осылайша, дискідегі орынды, жадты, батареяның жұмыс уақытын және іске қосылу уақытын үнемдеу (JIT жылыту кезеңі жоқ) және т.с.с. болғандықтан, ол ендірілген немесе мобильді құрылғыларда пайдалы болуы мүмкін.

Өнімділік бойынша есеп айырысулар

AOT компиляторлары күрделі және жетілдірілген кодты орындай алады оңтайландыру, бұл көптеген жағдайларда JITing өте қымбат деп саналады. Керісінше, AOT әдетте жұмыс уақыты сияқты JIT-те мүмкін болатын кейбір оңтайландыруларды орындай алмайды профильді басқаратын оңтайландыру (PGO), жалған-тұрақты көбейту, немесе жанама-виртуалды функция астарлау. AOT мақсатты архитектурада жинақталуы керек, ал JIT кодты бағдарламалық жасақтама шыққаннан кейін бірнеше жыл өткеннен кейін де жұмыс істеп тұрған нақты процессорды тиімді пайдалану үшін жинай алады.

Әрі қарай, JIT компиляторлары код бойынша болжамдар жасау арқылы спекулятивті түрде ыстық кодты оңтайландырады. Жасалған кодты кейіннен алып тастауға болады, егер кейін алыпсатарлық болжам дұрыс емес болса. Мұндай жұмыс істеп тұрған бағдарламалық жасақтаманың коды қайта оңтайландырылғанға дейін баяулайды адаптивті оңтайландыру. AOT компиляторы мұндай болжам жасай алмайды және компиляция кезінде мүмкіндігінше көбірек ақпарат беруі керек. Ол мамандандырылмаған кодқа жүгінуі керек, себебі қандай типтер әдіс арқылы өтетінін білмейді. Мұндай проблемаларды профильді басшылыққа алған оңтайландыру арқылы жеңілдетуге болады. Бірақ бұл жағдайда да, жасалған кодты JIT компиляторы сияқты өзгеретін жұмыс уақытының профиліне динамикалық түрде бейімдеу мүмкін емес.

Сондай-ақ қараңыз

Әдебиеттер тізімі

Сыртқы сілтемелер