¿Por qué es más rápido leer un archivo sin saltos de línea?

En Python 3.6, lleva más tiempo leer un archivo si hay saltos de línea. , Si tengo dos archivos, uno con saltos de línea y otro sin saltos de línea (pero de lo contrario tienen el mismo texto), el archivo con saltos de línea tomará alrededor del 100-200% del tiempo de lectura. He proporcionado un ejemplo específico.

Paso # 1: crea los archivos
sizeMB = 128
sizeKB = 1024 * sizeMB

with open(r'C:\temp\bigfile_one_line.txt', 'w') as f:
    for i in range(sizeKB):
        f.write('Hello World!\t'*73)  # There are roughly 73 phrases in one KB

with open(r'C:\temp\bigfile_newlines.txt', 'w') as f:
    for i in range(sizeKB):  
        f.write('Hello World!\n'*73)
Paso # 2: lee el archivo con una sola línea y rendimiento de tiempoIPython
%%timeit
with open(r'C:\temp\bigfile_one_line.txt', 'r') as f:
    text = f.read()
Salida
1 loop, best of 3: 368 ms per loop
Paso # 3: lea el archivo con muchas líneas y rendimiento de tiempoIPython
%%timeit
with open(r'C:\temp\bigfile_newlines.txt', 'r') as f:
    text = f.read()
Salida
1 loop, best of 3: 589 ms per loop

Esto es sólo un ejemplo. He probado esto para muchas situaciones diferentes, y hacen lo mismo:

Diferentes tamaños de archivo de 1 MB a 2 GBUsando file.readlines () en lugar de file.read ()Usar un espacio en lugar de una pestaña ('\ t') en el archivo de una sola línea (es decir, '¡Hola Mundo!')

Mi conclusión es que los archivos con nuevas líneas de caracteres ('\ n') tardan más en leerse que los archivos sin ellos. Sin embargo, esperaría que todos los personajes sean tratados de la misma manera. Esto puede tener consecuencias importantes para el rendimiento al leer muchos archivos.¿Alguien sabe por qué sucede esto?

Estoy usando Python 3.6.1, Anaconda 4.3.24 y Windows 10.

Respuestas a la pregunta(3)

Su respuesta a la pregunta