Ho una vecchia abitudine di evitare di chiamare i riferimenti più volte, sia per un codice di lettura / manutenzione più semplice, sia per una possibile efficienza. Ma mi chiedo quale sia più efficiente (memoria, prestazioni, entrambi?).
Ad esempio quando si lavora con XML usando un parser VTD
if( vn.toString( vn.getCurrentIndex() ).equalsIgnoreCase( "broken-label" ) == false )
{
do
{
if( parentNode != null )
{
currentNode = parentNode.addChildNode( vn.toString( vn.getCurrentIndex() ) );
}
else
{
currentNode = new xmlNode( vn.toString(vn.getCurrentIndex()), null );
treeNodes.add( 0, currentNode );
}
Non memorizza il valore, forse risparmiando un sovraccarico per creare spazio per salvare una variabile locale e anche ridurre il carico sul garbage collector (supponendo che questa sezione di codice venga ripetuta migliaia di volte in rapida successione.
La mia abitudine a un codice più pulito / efficiente sarebbe sostituire il precedente con la semplice modifica di
String label = vn.toString( vn.getCurrentIndex();
if( label ).equalsIgnoreCase( "vsled-image" ) == false )
{
do
{
if( parentNode != null )
{
currentNode = parentNode.addChildNode( label ) );
}
else
{
currentNode = new xmlNode( label, null );
treeNodes.add( 0, currentNode );
}
Mentre questo è ovviamente più facile da leggere e mantenere. Ci sono benefici non umani?