Dead code elimination

Dead code elimination

Dead code elimination (englisch für Entfernung von totem Code) ist ein Verfahren aus dem Bereich des Compilerbaus, das nicht verwendete Anweisungen beseitigt. Dadurch kommt es zu einem kleineren Programm mit schnellerer Ausführung.

Erläuterung mit Beispielen

Gegeben sei der folgende Beispielcode in Java:

 int i=0;
 
 public void foo(){
  boolean bar=false;
 
  if(bar)
  {
    i=2;
  }
  i=1;
 }

Die Variable bar wurde in diesem Fall mit false belegt, was dazu führt, dass die nachfolgende bedingte Anweisung (i = 2) nie ausgeführt werden kann. An dieser Stelle kommt es beim Compilieren zur dead code elimination und die gesamte Verzweigung inklusive der Variable bar werden entfernt, da sie keine Auswirkung auf den verbleibenden Code haben.[1] Der compilierte Code würde danach dann so aussehen:

int i=0;
 
public void foo(){
  i=1;
}

Ob es zur dead code elimination kommt, hängt vom verwendeten Compiler ab. So lässt sich das folgende Programm durch eine dead code elimination erheblich beschleunigen, wenn der Compiler erkennt, dass 300-mal dieselbe Zuweisung stattfindet:

int func(int a, int b){
  int x;
  for(int i=300;i>0;i--){
    x = a + b; // dead store
  }
  return x;
}

Öffentliche Wahrnehmung

Im November 2010 veröffentlichte Microsoft eine neue Version des Internet Explorers, der scheinbar alle anderen Browser in puncto JavaScript-Geschwindigkeit weit hinter sich ließ. Es stellte sich jedoch schon bald heraus, dass Microsoft eine spezielle Implementation der dead code elimination nutzte, um sich an die Spitze eines bekannten JavaScript-Benchmarks zu katapultieren. In anderen Benchmarks waren die Resultate eher im Mittelfeld.[2]

Einzelnachweise

  1. Compilerbau und Optimierung
  2. Herbert Braun: Browser-Debatte: Hat Microsoft geschummelt? Heise Online. 18. November 2010.

Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Dead code elimination — In compiler theory, dead code elimination is a compiler optimization to remove code which does not affect the program results. Removing such code has two benefits: it shrinks program size, an important consideration in some contexts, and it… …   Wikipedia

  • Dead code — is a computer programming term for code in the source code of a program which is executed but whose result is never used in any other computation.[1][2] The execution of dead code wastes computation time as its results are never used. While the… …   Wikipedia

  • Code bloat — is the production of code that is perceived as unnecessarily long, slow, or otherwise wasteful of resources. Code bloat can be caused by inadequacies in the language in which the code is written, inadequacies in the compiler used to compile the… …   Wikipedia

  • Unreachable code — In computer programming, unreachable code, or dead code, is code that exists in the source code of a program but can never be executed.Dead code is generally considered undesirable for a number of reasons, including:*If the author of the code… …   Wikipedia

  • Mathematical elimination — The terms mathematical elimination and mathematically eliminated mean to be excluded in a decision, based on numerical counts, due to insufficient total numbers, even if all remaining events were 100% in favor. The excluded outcome is considered… …   Wikipedia

  • code —    by William Pawlett   The concept of the code (le code, la grille) is an important term in Baudrillard s early work. It is used in two related senses: firstly, to understand and critique consumer capitalism, suggesting that it is a system of… …   The Baudrillard dictionary

  • Uniform civil code — is a term which has originated from the concept of a Civil Law Code. It envisages administering the same set of secular civil laws to govern different people belonging to different religions and regions. This supersedes the right of citizens to… …   Wikipedia

  • Compiler optimization — is the process of tuning the output of a compiler to minimize or maximize some attributes of an executable computer program. The most common requirement is to minimize the time taken to execute a program; a less common one is to minimize the… …   Wikipedia

  • Static single assignment form — In compiler design, static single assignment form (often abbreviated as SSA form or SSA) is an intermediate representation (IR) in which every variable is assigned exactly once. Existing variables in the original IR are split into versions , new… …   Wikipedia

  • GNU Compiler Collection — Cc1 redirects here. For other uses of CC1 or CC 1, see CC1 (disambiguation). GNU Compiler Collection Developer(s) GNU Project Initial release May 23, 1987 ( …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”