Ottimizzazione del compilatore: bytecode Java


Attualmente sto scrivendo un compilatore giocattolo destinato al bytecode Java nella traduzione.

Mi piacerebbe sapere se c'è qualche tipo di catalogo, forse un riassunto, di varie semplici ottimizzazioni di spioncino che possono essere fatte nel bytecode emesso prima di scrivere il .file di classe. In realtà sono a conoscenza di alcune librerie che hanno questa funzionalità, ma mi piacerebbe implementarlo da solo.

Author: Giuliano Vilela, 2009-11-05

1 answers

Sei a conoscenza di Proguard? http://proguard.sourceforge.net /

Questo è un ottimo ottimizzatore di bytecode che implementa molte ottimizzazioni. Vedi le FAQ per un elenco: http://proguard.sourceforge.net/FAQ.html

  • Valuta le espressioni costanti.
  • Rimuove gli accessi ai campi e il metodo non necessari chiamare.
  • Rimuovere i rami non necessari.
  • Rimuovere i confronti non necessari e istanzadei test.
  • Rimuove il codice inutilizzato blocco.
  • Unisci blocchi di codice identici.
  • Ridurre l'allocazione delle variabili.
  • Rimuovere campi di sola scrittura e metodo inutilizzato parametro.
  • Campi costanti in linea, parametri del metodo e valori di ritorno.
  • Metodi in linea che sono brevi o solo ho chiamato una volta.
  • Semplifica la ricorsione della coda chiamare.
  • Unisci classi e interfacce.
  • Rende i metodi privati, statici e finale quando possibile.
  • Crea classi statico e finale quando possibile.
  • Sostituire le interfacce che hanno attuazione.
  • Eseguire oltre 200 ottimizzazioni di spioncino, come sostituire ...*2 di ...
  • Facoltativamente rimuovere il codice di registrazione.

Sono sicuro che puoi esaminare ulteriormente il codice sorgente per capire come vengono implementati.

 23
Author: Sean Owen, 2009-11-05 12:21:53