¿Cuál es el beneficio de ViewHolder?

Cuando estás desarrollando un programa de Android; y quieres tener unArrayAdapter simplemente puedes tener una clase (la mayoría de las veces conViewHolder sufijo) o directamente infla tuconvertView y encuentra tu vista por id.
Entonces, ¿cuál es el beneficio de usar ViewHolder?
El ejemplo de ambos aquí:

        if(convertView==null)
        {
            convertView = ((Activity)_context).getLayoutInflater().inflate(R.layout.row_phrase, null);
        }
((TextView)convertView.findViewById(R.id.txtPhrase)).setText("Phrase 01");  

O

static class ViewHolder {   
ImageView leftIcon;   
TextView upperLabel;  
TextView lowerLabel;  
}

y finalmente en el getView:

ViewHolder holder = null;
  if (view == null) {
   view = LayoutInflater.from(context).inflate(R.layout.row_layout,
   null, false);
   holder = new ViewHolder();
   holder.leftIcon = (ImageView) view.findViewById(R.id.leftIcon);

Respuestas a la pregunta(4)

Su respuesta a la pregunta