An Entity of Type: ChangeOfState100199130, from Named Graph: http://dbpedia.org, within Data Space: dbpedia.org

Interprocedural optimization (IPO) is a collection of compiler techniques used in computer programming to improve performance in programs containing many frequently used functions of small or medium length. IPO differs from other compiler optimizations because it analyzes the entire program; other optimizations look at only a single function, or even a single block of code.

Property Value
dbo:abstract
  • Interprocedural optimization (IPO) is a collection of compiler techniques used in computer programming to improve performance in programs containing many frequently used functions of small or medium length. IPO differs from other compiler optimizations because it analyzes the entire program; other optimizations look at only a single function, or even a single block of code. IPO seeks to reduce or eliminate duplicate calculations, inefficient use of memory, and to simplify iterative sequences such as loops. If there is a call to another routine that occurs within a loop, IPO analysis may determine that it is best to inline that. Additionally, IPO may re-order the routines for better memory layout and locality. IPO may also include typical compiler optimizations on a whole-program level, for example dead code elimination (DCE), which removes code that is never executed. To accomplish this, the compiler tests for branches that are never taken and removes the code in that branch. IPO also tries to ensure better use of constants. Modern compilers offer IPO as an option at compile-time. The actual IPO process may occur at any step between the human-readable source code and producing a finished executable binary program. For languages that compile on a file-by-file basis, effective IPO across translation units (module files) requires knowledge of the "entry points" of the program so that a whole program optimization (WPO) can be run. In many cases, this is implemented as a link-time optimization (LTO) pass, because the whole program is visible to the linker. (en)
  • 프로시저 간 최적화(interprocedural optimization, IPO)는 중소 규모의 길이의 자주 사용되는 수많은 함수들을 포함하여 프로그램의 성능 개선을 위해 컴퓨터 프로그래밍에 사용되는 컴파일러 기법의 모임이다. IPO는 다른 컴파일러 최적화와는 다른데, IPO가 프로그램 전반을 분석하는 반면, 다른 최적화 기법들은 하나의 함수, 또는 하나의 코드 블록만 본다. IPO는 중복 연산, 비효율적인 메모리 사용을 감소시키거나 제거하고 루프와 같은 반복적인 시퀀스를 단순케하는 방법을 강구한다. 루프 안에서 발생되는 다른 루틴으로의 호출이 있을 경우 IPO는 이를 인라인하는 것이 최적인지를 확인하고 결정할 수 있다. 게다가 IPO는 더 나은 메모리 레이아웃과 를 위해 루틴을 재정렬할 수 있다. 또, IPO는 전체 프로그램 수준에서 일반적인 컴파일러 최적화를 수행할 수도 있는데 이를테면 전혀 실행될 가능성이 없는 코드를 제거하는 를 들 수 있다. 이를 수행하기 위해 컴파일러는 전혀 취하지 않은 브랜치에 대해 테스트하고 브랜치 안의 코드를 제거한다. 또, IPO는 더 나은 상수(constant)의 사용 보장을 시도한다. 현대의 컴파일러들은 컴파일 시간에 옵션으로서 IPO를 제공한다. 실제 IPO 프로세스는 인간이 읽을 수 있는 소스 코드와 완성된 실행 파일 바이너리 프로그램을 생성하는 과정 사이에서 발생할 수 있다. 전체 프로그램 최적화(Whole program optimization, WPO)는 프로그램 내 모든 모듈에 대한 정보를 사용하여 프로그램을 최적화하는 것을 말한다. 일반적으로 모듈 단위로 최적화가 수행되지만 이 접근 방식은 비록 컴파일 중에 리소스의 쓰기와 테스트가 더 용이하고 수요를 더 줄일 수 있으나 과감한 인라인과 같은 수많은 최적화의 안전에 대한 확실성을 허용하지 않는다. 링크 타임 최적화(Link-time optimization)는 링크 타임에 컴파일러가 프로그램에 수행하는 프로그램 최적화의 일종이다. 링크 타임 최적화는 파일 대 파일을 기초로 하여 이 파일들을 함께 링크하는 프로그램 언어(예: C, 포트란)에 적절하며, 자바의 JIT 컴파일과 같은 방식에는 부적절하다. (ko)
  • Межпроцедурная оптимизация (англ. Interprocedural Optimization, IPO), или полнопрограммная оптимизация программ (англ. whole program optimization) — оптимизация компилятора, которая использует глобальный анализ потока управления и затрагивает множество процедур, даже находящихся в разных модулях, за счёт чего может достигаться существенный прирост быстродействия. С ростом объёма программ разработчики стали делать свой код всё более удобочитаемым и повторно используемым. Зачастую это приводит к тому, что процедуры становятся предельно общими, в то время как в конкретной программе можно обойтись и частным случаем. Задача межпроцедурной оптимизации — именно генерация таких частных случаев. Межпроцедурная оптимизация выполняется компилятором автоматически (иногда с указанием специальных директив). Её активация может приводить к существенному увеличению времени компиляции. К компиляторам, умеющим выполнять указанную оптимизацию, относятся MLton и MLKit для Standard ML, для Scheme, JHC для Haskell, Intel C++ Compiler. (ru)
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 4912446 (xsd:integer)
dbo:wikiPageLength
  • 23635 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 1097133796 (xsd:integer)
dbo:wikiPageWikiLink
dbp:wikiPageUsesTemplate
dcterms:subject
rdf:type
rdfs:comment
  • Interprocedural optimization (IPO) is a collection of compiler techniques used in computer programming to improve performance in programs containing many frequently used functions of small or medium length. IPO differs from other compiler optimizations because it analyzes the entire program; other optimizations look at only a single function, or even a single block of code. (en)
  • 프로시저 간 최적화(interprocedural optimization, IPO)는 중소 규모의 길이의 자주 사용되는 수많은 함수들을 포함하여 프로그램의 성능 개선을 위해 컴퓨터 프로그래밍에 사용되는 컴파일러 기법의 모임이다. IPO는 다른 컴파일러 최적화와는 다른데, IPO가 프로그램 전반을 분석하는 반면, 다른 최적화 기법들은 하나의 함수, 또는 하나의 코드 블록만 본다. IPO는 중복 연산, 비효율적인 메모리 사용을 감소시키거나 제거하고 루프와 같은 반복적인 시퀀스를 단순케하는 방법을 강구한다. 루프 안에서 발생되는 다른 루틴으로의 호출이 있을 경우 IPO는 이를 인라인하는 것이 최적인지를 확인하고 결정할 수 있다. 게다가 IPO는 더 나은 메모리 레이아웃과 를 위해 루틴을 재정렬할 수 있다. 링크 타임 최적화(Link-time optimization)는 링크 타임에 컴파일러가 프로그램에 수행하는 프로그램 최적화의 일종이다. 링크 타임 최적화는 파일 대 파일을 기초로 하여 이 파일들을 함께 링크하는 프로그램 언어(예: C, 포트란)에 적절하며, 자바의 JIT 컴파일과 같은 방식에는 부적절하다. (ko)
  • Межпроцедурная оптимизация (англ. Interprocedural Optimization, IPO), или полнопрограммная оптимизация программ (англ. whole program optimization) — оптимизация компилятора, которая использует глобальный анализ потока управления и затрагивает множество процедур, даже находящихся в разных модулях, за счёт чего может достигаться существенный прирост быстродействия. (ru)
rdfs:label
  • Interprocedural optimization (en)
  • 프로시저 간 최적화 (ko)
  • Межпроцедурная оптимизация (ru)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is foaf:primaryTopic of
Powered by OpenLink Virtuoso    This material is Open Knowledge     W3C Semantic Web Technology     This material is Open Knowledge    Valid XHTML + RDFa
This content was extracted from Wikipedia and is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License