Ahead-of-time compilation (original) (raw)
V počítačové vědě je ahead-of-time (AOT) kompilace označena jako kompilační úkon, ve kterém je kód ve vyšších programovacích jazycích jako C nebo C++, či mezijazyk jako Java bytecode nebo .NET Framework (CIL), převeden do nativního strojového kódu, aby výsledný binární soubor mohl být spuštěn nativně. AOT vytváří strojově optimalizovaný kód, stejně jako standardní nativní kompilátor. Rozdíl spočívá v tom, že AOT transformuje byte kód existujícího virtuálního stroje (VM) do strojového kódu.
Property | Value |
---|---|
dbo:abstract | V počítačové vědě je ahead-of-time (AOT) kompilace označena jako kompilační úkon, ve kterém je kód ve vyšších programovacích jazycích jako C nebo C++, či mezijazyk jako Java bytecode nebo .NET Framework (CIL), převeden do nativního strojového kódu, aby výsledný binární soubor mohl být spuštěn nativně. AOT vytváří strojově optimalizovaný kód, stejně jako standardní nativní kompilátor. Rozdíl spočívá v tom, že AOT transformuje byte kód existujícího virtuálního stroje (VM) do strojového kódu. (cs) In computer science, ahead-of-time compilation (AOT compilation) is the act of compiling an (often) higher-level programming language into an (often) lower-level language before execution of a program, usually at build-time, to reduce the amount of work needed to be performed at run time. Most often, It is associated with the act of compiling a higher-level programming language such as C or C++, or an intermediate representation such as Java bytecode or .NET Framework Common Intermediate Language (CIL) code, into a native (system-dependent) machine code so that the resulting binary file can execute natively, just like a standard native compiler. When being used in this specific context, it's often seen as an opposite of just-in-time (JIT) compiling. Speaking more generally, the target languages of an AOT compilation are not necessarily specific to native machine code but are defined rather arbitrarily. Some academic papers use this word to mean the act of compiling the Java bytecode to C or the timing when optimization pipeline are performed. An academic project uses this word to mean the act of pre-compiling JavaScript to a machine-dependent optimized IR for V8 (JavaScript engine) and to a machine independent bytecode for JavaScriptCore. Some industrial language implementations (e.g. Clojure and Hermes JavaScript engine) use this word to mean the act of pre-compiling the source language to VM specific bytecode. Angular (web framework) uses this word to mean converting its HTML template and TypeScript to JavaScript. In fact, since all static compilation are technically performed ahead of time, this particular wording are often used to emphasize some kind of performance advantages from the act of such pre-compiling. The act of compiling Java to Java bytecode is hence rarely referred to as AOT since it's usually a requirement, not an optimization. (en) En informática, Compilación anticipada (AOT por sus siglas en inglés, ahead-of-time) es el acto de compilar un lenguaje de programación de alto nivel como C o C++, o un lenguaje intermedio como Java bytecode o el Common Intermediate Language (CIL) de .NET, a un código de máquina nativo (dependiente del sistema) con la intención de ejecutar el archivo binario resultante nativamente. AOT produce código máquina optimizado, igual que un compilador nativo "estándar". La diferencia es que AOT transforma el bytecode de una máquina virtual (VM) a código máquina. (es) La compilation anticipée (ou compilation hors ligne, ou compilation AOT où AOT signifie ahead-of-time; en anglais, ahead-of-time compilation) est une compilation qui traduit un langage évolué en langage machine avant l'exécution d'un programme contrairement à une compilation à la volée (just-in-time compilation) qui se fait lors de l'exécution du programme. La compilation anticipée permet d'avoir une vue d'ensemble du code, ce qui n'est pas le cas d'une compilation à la volée qui ne peut faire que des optimisations locales. La compilation anticipée permet de diminuer les coûts de traitements des exceptions et les appels aux méthodes et interfaces. (fr) AOT 컴파일(ahead-of-time compile)은 목표 시스템의 기계어와 무관하게 중간 언어 형태로 배포된 후 목표 시스템에서 인터프리터나 JIT 컴파일 등 기계어 번역을 통해 실행되는 중간 언어를 미리 목표 시스템에 맞는 기계어로 번역하는 방식을 지칭한다. 이런 중간 언어로는 자바 바이트코드, 공통 중간 언어(Common Intermediate Language), IBM System/38 혹은 IBM System i의 기술 독립적 머신 인터페이스(Technology Independent Machine Interface)가 있으며 학계에서도 마이클 프란즈(Michael Franz)가 제안해 오베론 시스템의 일부 구현에서 사용된 슬림 바이너리(Slim Binaries)와 같은 제안이 있었다. 일반적으로 중간 언어를 사용하는 시스템은 실행 시간에 JIT 컴파일과 같은 기법을 통해 실행 시에만 얻을 수 있는 프로그램 분석 정보를 사용하여 높은 성능을 달성할 수 있다. 특히 객체 지향 언어나 스크립트 언어 같이 동적인 언어인 경우 효과적이다. 하지만 실행 시 프로그램 분석과 컴파일을 함께 수행하는데 추가 메모리 및 CPU 사이클이 필요한 단점이 있다. 따라서 AOT 컴파일은 이에 대한 보완책으로 사용되고 있다. (ko) Ahead-of-Time (AOT) компилятор — это вид транслятора, который использует метод компиляции перед исполнением (англ. ahead-of-time compilation). Применяется как для компиляции высокоуровневых языков (например, Си, C++ или Паскаль), так и для компиляции «промежуточных» языков, таких как байт-код Java, .NET Common Intermediate Language (CIL), IBM System/38, IBM System i. Во многих реализациях языков программирования используется JIT-компиляция, которая позволяет компилировать промежуточный код напрямую в бинарный во время его выполнения, что позволяет существенно увеличить скорость выполнения. JIT требует выделения дополнительной памяти. Метод АОТ не требует выделения дополнительной памяти и АОТ-компиляция проходит с минимальной нагрузкой на систему. Процесс компиляции полностью выполняется перед выполнением программы. (ru) Um compilador é um programa de software que converte código de programação de computador escrito por um programador humano em código binário (código de máquina) que pode ser entendido e executado por uma CPU específica. O ato de transformar o código-fonte em código de máquina é chamado de "compilação". Quando todo o código é transformado de uma só vez antes de atingir as plataformas que o executam, o processo é chamado de Compilação AOT (Ahead-Of-Time) . Ele difere do processo Just-In-Time(JIT). Ou seja é um processo de compilação que ocorre antes da execução do aplicativo e não durante, como ocorre no processo JIT. O processo AOT compila uma linguagem de alto nível (C, C++, etc.) ou um bytecode (código intermediário. Ex: Java) em código de maquina nativo (dependente do sistema) para que o arquivo binário resultante, seja executado nativamente, ajudando a eliminar sobrecargas de compilação durante a execução. Um exemplo de aplicações que usam esse processo de compilação são: Angular (plataforma de aplicações web), Android Runtime (ambiente de execução do sistema operacional Android), OpenJDK, etc. (pt) Компілятор перед виконанням (англ. ahead-of-time compilation (AOT)) — це вид транслятора, який використовує метод компіляції перед виконанням. Використовується як для компіляції високорівневних мов програмування, так і для компіляції так званих «проміжкових» мов. В багатьох реалізаціях мов програмування використовується компіляція під час виконання, яка дозволяє компілювати проміжковий код напряму в бінарний під час його виконання, що дозволяє значно збільшити швидкість виконання, але ця стратегія потребує виділення додаткової пам'яті. Стратегія AOT не потребує виділення додаткової пам'яті, а також вона проходить з мінімальним навантаженням на систему. Процес компіляції повністю виконується перед виконанням програми. Компіляція перед виконанням дозволяє компілювати класи в машинний код для подальшого виконання однієї і тієї самої програми. Компілятор АОТ працює з платформою обміну даними класу. Компілятор такого виду динамічно генерує машинний код під час виконання застосунку і кешує будь-який згенерований код АОТ в загальному кеші даних. Наступні машини, що виконують цей метод, можуть завантажувати і використовувати код АОТ із загального кешу даних без зниження продуктивності, що спостерігається при використанні скомпільованого машинного коду. Компілятор АОТ увімкнений за замовчуванням, але активний лише тоді, коли увімкнені загальні класи. За замовчуванням, загальні класи вимкнені, так що ніякої активності АОТ не відбувається. Коли компілятор АОТ активний, компілятор обирає методи для компіляції АОТ з основною ціллю покращення часу запуску. (uk) |
dbo:wikiPageExternalLink | http://linux.sys-con.com/read/46901.htm http://www.mono-project.com/AOT https://blog.mozilla.org/luke/2014/01/14/asm-js-aot-compilation-and-startup-performance/ http://msdn.microsoft.com/en-us/magazine/cc163808.aspx https://web.archive.org/web/20080612163029/http:/linux.sys-con.com/read/46901.htm https://web.archive.org/web/20090507103601/http:/www.cs.vu.nl/manta/ https://web.archive.org/web/20101216063748/http:/www.excelsior-usa.com/jet.html https://web.archive.org/web/20160802232148/http:/gcc.gnu.org/java/ http://www.ibm.com/developerworks/java/library/j-rtj2/index.html%23N10153 |
dbo:wikiPageID | 9934469 (xsd:integer) |
dbo:wikiPageLength | 8690 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1124873441 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Ruby_(programming_language) dbr:V8_(JavaScript_engine) dbr:Intermediate_representation dbr:.NET_Framework dbr:Compiler dbr:Run_time_(program_lifecycle_phase) dbr:Clojure dbr:GNU_Compiler_for_Java dbr:Angular_(web_framework) dbr:Common_Intermediate_Language dbr:Profile-guided_optimization dbr:Native_Image_Generator dbr:C++ dbr:C_(programming_language) dbr:TypeScript dbr:WebKit dbr:Just-in-time_compilation dbr:Adaptive_optimization dbr:Dynamic_typing dbr:Erlang_(programming_language) dbr:Excelsior_JET dbr:Bartok_(compiler) dbr:Machine_code dbr:Runtime_environment dbr:HTML dbr:JavaScript dbr:Java_(programming_language) dbr:Asm.js dbc:Compilers dbr:JavaScript_engine dbr:Java_bytecode dbr:Optimizing_compiler dbr:Virtual_function dbr:IL2CPU dbr:Programming_language dbr:Managed_code dbr:Inlining dbr:RubyMotion dbr:Static_compilation dbr:Constant_propagation |
dbp:date | 2008-06-12 (xsd:date) |
dbp:url | https://web.archive.org/web/20080612163029/http:/linux.sys-con.com/read/46901.htm |
dbp:wikiPageUsesTemplate | dbt:Citation_needed dbt:Div_col dbt:Div_col_end dbt:Expand_section dbt:More_footnotes dbt:Portal dbt:Reflist dbt:Short_description dbt:Webarchive dbt:Program_execution |
dcterms:subject | dbc:Compilers |
gold:hypernym | dbr:Act |
rdf:type | yago:WikicatCompilers yago:CausalAgent100007347 yago:Communicator109610660 yago:Compiler109946957 yago:LivingThing100004258 yago:Object100002684 yago:Organism100004475 yago:Person100007846 yago:PhysicalEntity100001930 yago:Writer110794014 yago:YagoLegalActor yago:YagoLegalActorGeo dbo:Band yago:Whole100003553 |
rdfs:comment | V počítačové vědě je ahead-of-time (AOT) kompilace označena jako kompilační úkon, ve kterém je kód ve vyšších programovacích jazycích jako C nebo C++, či mezijazyk jako Java bytecode nebo .NET Framework (CIL), převeden do nativního strojového kódu, aby výsledný binární soubor mohl být spuštěn nativně. AOT vytváří strojově optimalizovaný kód, stejně jako standardní nativní kompilátor. Rozdíl spočívá v tom, že AOT transformuje byte kód existujícího virtuálního stroje (VM) do strojového kódu. (cs) En informática, Compilación anticipada (AOT por sus siglas en inglés, ahead-of-time) es el acto de compilar un lenguaje de programación de alto nivel como C o C++, o un lenguaje intermedio como Java bytecode o el Common Intermediate Language (CIL) de .NET, a un código de máquina nativo (dependiente del sistema) con la intención de ejecutar el archivo binario resultante nativamente. AOT produce código máquina optimizado, igual que un compilador nativo "estándar". La diferencia es que AOT transforma el bytecode de una máquina virtual (VM) a código máquina. (es) In computer science, ahead-of-time compilation (AOT compilation) is the act of compiling an (often) higher-level programming language into an (often) lower-level language before execution of a program, usually at build-time, to reduce the amount of work needed to be performed at run time. (en) La compilation anticipée (ou compilation hors ligne, ou compilation AOT où AOT signifie ahead-of-time; en anglais, ahead-of-time compilation) est une compilation qui traduit un langage évolué en langage machine avant l'exécution d'un programme contrairement à une compilation à la volée (just-in-time compilation) qui se fait lors de l'exécution du programme. (fr) AOT 컴파일(ahead-of-time compile)은 목표 시스템의 기계어와 무관하게 중간 언어 형태로 배포된 후 목표 시스템에서 인터프리터나 JIT 컴파일 등 기계어 번역을 통해 실행되는 중간 언어를 미리 목표 시스템에 맞는 기계어로 번역하는 방식을 지칭한다. 이런 중간 언어로는 자바 바이트코드, 공통 중간 언어(Common Intermediate Language), IBM System/38 혹은 IBM System i의 기술 독립적 머신 인터페이스(Technology Independent Machine Interface)가 있으며 학계에서도 마이클 프란즈(Michael Franz)가 제안해 오베론 시스템의 일부 구현에서 사용된 슬림 바이너리(Slim Binaries)와 같은 제안이 있었다. (ko) Um compilador é um programa de software que converte código de programação de computador escrito por um programador humano em código binário (código de máquina) que pode ser entendido e executado por uma CPU específica. O ato de transformar o código-fonte em código de máquina é chamado de "compilação". Quando todo o código é transformado de uma só vez antes de atingir as plataformas que o executam, o processo é chamado de Compilação AOT (Ahead-Of-Time) . Ele difere do processo Just-In-Time(JIT). (pt) Ahead-of-Time (AOT) компилятор — это вид транслятора, который использует метод компиляции перед исполнением (англ. ahead-of-time compilation). Применяется как для компиляции высокоуровневых языков (например, Си, C++ или Паскаль), так и для компиляции «промежуточных» языков, таких как байт-код Java, .NET Common Intermediate Language (CIL), IBM System/38, IBM System i. Метод АОТ не требует выделения дополнительной памяти и АОТ-компиляция проходит с минимальной нагрузкой на систему. Процесс компиляции полностью выполняется перед выполнением программы. (ru) Компілятор перед виконанням (англ. ahead-of-time compilation (AOT)) — це вид транслятора, який використовує метод компіляції перед виконанням. Використовується як для компіляції високорівневних мов програмування, так і для компіляції так званих «проміжкових» мов. В багатьох реалізаціях мов програмування використовується компіляція під час виконання, яка дозволяє компілювати проміжковий код напряму в бінарний під час його виконання, що дозволяє значно збільшити швидкість виконання, але ця стратегія потребує виділення додаткової пам'яті. (uk) |
rdfs:label | Ahead-of-time kompilace (cs) Ahead-of-time compilation (en) Compilación anticipada (es) Compilation anticipée (fr) AOT 컴파일 (ko) Compilação AOT (pt) AOT-компиляция (ru) Компіляція перед виконанням (uk) |
owl:sameAs | freebase:Ahead-of-time compilation yago-res:Ahead-of-time compilation wikidata:Ahead-of-time compilation dbpedia-cs:Ahead-of-time compilation dbpedia-es:Ahead-of-time compilation dbpedia-fa:Ahead-of-time compilation dbpedia-fr:Ahead-of-time compilation http://hy.dbpedia.org/resource/AOT-կոմպիլյացիա dbpedia-ko:Ahead-of-time compilation dbpedia-pt:Ahead-of-time compilation dbpedia-ru:Ahead-of-time compilation dbpedia-sl:Ahead-of-time compilation dbpedia-tr:Ahead-of-time compilation dbpedia-uk:Ahead-of-time compilation https://global.dbpedia.org/id/5hUnx |
prov:wasDerivedFrom | wikipedia-en:Ahead-of-time_compilation?oldid=1124873441&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Ahead-of-time_compilation |
is dbo:wikiPageDisambiguates of | dbr:AOT |
is dbo:wikiPageRedirects of | dbr:AOT_compiler dbr:Ahead-of-time dbr:Ahead-of-time_compiler dbr:Ahead-of-time_optimization dbr:AOT_(compiler) dbr:AOT_compilation |
is dbo:wikiPageWikiLink of | dbr:Quarkus dbr:Ruby_(programming_language) dbr:Android_Runtime dbr:Julia_(programming_language) dbr:Dead-code_elimination dbr:.NET dbr:.NET_Framework dbr:Cosmos_(operating_system) dbr:Golo_(programming_language) dbr:Google_Native_Client dbr:GraalVM dbr:Mirah_(programming_language) dbr:Android_(operating_system) dbr:Android_KitKat dbr:Android_Lollipop dbr:Android_version_history dbr:Common_Intermediate_Language dbr:Comparison_of_Java_virtual_machines dbr:Comparison_of_application_virtualization_software dbr:Compile_and_go_system dbr:Ports_collection dbr:Native_Image_Generator dbr:WebAssembly dbr:Just-in-time_compilation dbr:List_of_CLI_languages dbr:Dart_(programming_language) dbr:Flutter_(software) dbr:List_of_Java_virtual_machines dbr:AOT dbr:AOT_compiler dbr:Java_version_history dbr:TempleOS dbr:AssemblyScript dbr:Java_performance dbr:Jazelle dbr:DigitaOS dbr:IBM_i dbr:Ahead-of-time dbr:Ahead-of-time_compiler dbr:OpenJ9 dbr:SharpOS dbr:Rosetta_(software) dbr:IL2CPU dbr:Web_API dbr:Ahead-of-time_optimization dbr:AOT_(compiler) dbr:AOT_compilation |
is foaf:primaryTopic of | wikipedia-en:Ahead-of-time_compilation |