Domanda

Se accendo la generazione delle informazioni di debug con Javac, i file di classe sono più grandi del 20-25%. Ciò ha effetti sulle prestazioni nell'esecuzione del programma Java? Se sì, a quali condizioni e quanti. Mi aspetto un piccolo impatto sul caricamento delle classi perché i file sono più grandi, ma questo dovrebbe essere minimo.

È stato utile?

Soluzione

In qualsiasi lingua, le informazioni di debug sono meta informazioni. Per sua natura aumenta la dimensione dei file oggetto, aumentando così il tempo di caricamento. Durante l'esecuzione all'esterno di un debugger, queste informazioni vengono in realtà completamente ignorate. Come indicato (anche se non chiaramente) nelle Specifiche JVM le informazioni di debug sono memorizzate al di fuori del flusso bytecode. Ciò significa che al momento dell'esecuzione non vi è alcuna differenza nel file di classe. Se vuoi essere sicuro, provalo :-).

Ps. Spesso per il debug è utile disattivare l'ottimizzazione. Che ha ha un impatto sulle prestazioni.

Altri suggerimenti

La disattivazione del debug da sola non dovrebbe fare alcuna differenza. Ma una volta disattivato il debug e attivata l'ottimizzazione, dovresti vedere una differenza, poiché questo rende alcune ottimizzazioni statiche al momento della compilazione. In questo modo anche il tuo codice ottimizzato hot spot diventa più veloce in fase di esecuzione.

Ma finora, il compromesso tra ottenere tracce di stack complete o avere un po 'più di prestazioni per l'utente, ho sempre votato per le tracce di stack. Dopotutto, gli utenti sono disposti a spendere 1000 $ ogni anno per ottenere una macchina più veloce, ma non sono disposti a spendere 15 minuti per darti messaggi di errore significativi per risolvere i loro problemi.

Dopo gli anni, sono più disposto a valutare i miei 15 minuti in più rispetto ai 1000 $ dell'utente. :)

Tieni presente che poiché JDK1.3 javac ignora qualsiasi flag di ottimizzazione, "l'ottimizzazione del tempo di compilazione non è necessaria"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top