¿Por qué la impresión "B" es dramáticamente más lenta que la impresión "#"?


Generé dos matrices de 1000 x 1000:

Primera Matriz: O y #.
Segunda Matriz: O y B.

Usando el siguiente código, la primera matriz tardó 8.52 segundos en completarse:

Random r = new Random();
for (int i = 0; i < 1000; i++) {
    for (int j = 0; j < 1000; j++) {
        if(r.nextInt(4) == 0) {
            System.out.print("O");
        } else {
            System.out.print("#");
        }
    }

   System.out.println("");
 }

Con este código, la segunda matriz tardó 259.152 segundos en completarse:

Random r = new Random();
for (int i = 0; i < 1000; i++) {
    for (int j = 0; j < 1000; j++) {
        if(r.nextInt(4) == 0) {
            System.out.print("O");
        } else {
            System.out.print("B"); //only line changed
        }
    }

    System.out.println("");
}

¿Cuál es la razón detrás de los tiempos de ejecución dramáticamente diferentes?


Como se sugiere en los comentarios, imprimir solo System.out.print("#"); toma 7.8871 segundos, mientras que System.out.print("B"); da still printing....

Como otros que señalaron que funciona para ellos normalmente, intenté Ideone.com por ejemplo, y ambas piezas de código se ejecutan a la misma velocidad.

Condiciones de ensayo:

  • Ejecuté esta prueba desde Netbeans 7.2 , con la salida en su consola
  • Usé System.nanoTime() para mediciones

Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32

Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52