2010-07-09 8 views
11

Actualmente estoy probando el rendimiento de diferentes métodos para registrar datos de texto en un archivo. Parece que cuando abro/escribo/cierro una gran cantidad de veces, la extensión utilizada afecta el rendimiento. (.txt y .log son ~ 7 veces más rápido)¿Por qué la extensión de archivo afecta la velocidad de escritura? (C#, StreamWriter)

código utilizado:

private static void TestWriteSpeed(FileInfo file) 
{ 
    Stopwatch watch = new Stopwatch(); 
    watch.Start(); 
    for (int i = 0; i < 5000; i++) 
    { 
     using (StreamWriter writer = file.AppendText()) 
     { 
      writer.Write("This is a test"); 
     } 
    } 
    Console.WriteLine(file.Name + ": " + watch.Elapsed); 
} 

static void Main(string[] args) 
{ 
    TestWriteSpeed(new FileInfo("abc.txt")); 
    TestWriteSpeed(new FileInfo("abc.txt.01564611564")); 
    TestWriteSpeed(new FileInfo("abc.01564611564.txt")); 
    TestWriteSpeed(new FileInfo("abc.xml")); 
    TestWriteSpeed(new FileInfo("abc.xml.01564611564")); 
    TestWriteSpeed(new FileInfo("abc.config")); 
    TestWriteSpeed(new FileInfo("abc.config.01564611564")); 
    TestWriteSpeed(new FileInfo("abc.exe")); 
    TestWriteSpeed(new FileInfo("abc.exe.01564611564")); 
    TestWriteSpeed(new FileInfo("abc.log")); 
    TestWriteSpeed(new FileInfo("abc.log.01564611564")); 
    Console.ReadLine(); 
} 

Resultados:

abc.txt     00:00:08.3826847 <--- 
abc.txt.01564611564  00:00:59.7401633 
abc.01564611564.txt  00:00:08.0069698 <--- 
abc.xml     00:00:58.2031820 
abc.xml.01564611564  00:00:59.3956204 
abc.config    00:00:58.4861308 
abc.config.01564611564 00:01:01.2474287 
abc.exe:     00:01:00.0924401 
abc.exe.01564611564  00:01:00.7371805 
abc.log     00:00:08.0009934 <--- 
abc.log.01564611564  00:00:59.8029448 

Por qué sucede esto?

+14

El antivirus estaba apagado, ¿no? –

+2

@orsol ¿quién demonios correría AV en lugar de solo RANU? – Will

+0

@Will ¿Qué es RANU? –

Respuesta

15

Parece que otra aplicación o proceso está leyendo o supervisando los archivos que se están escribiendo e ignorando los archivos .txt o .log por razones de rendimiento.

¿Por qué? Debido a que su montón de código, cuando se ejecuta en mi computadora portátil, da los mismos resultados para todos los archivos (22 segundos), sin ninguna variación.

+0

Wow, nunca hubiera pensado en mi antivirus, gracias por la respuesta rápida –

5

Como sugirió Orsol, es posible que su AV ignore los archivos txt y de registro.

6

He probado esto en mi máquina de trabajo; una máquina Core 2 con Windows XP de 32 bits con Symantec Endpoint Protection AV instalado. Estos son mis resultados:

abc.txt:    00:00:07.1192029 
abc.txt.01564611564: 00:00:06.9956377 
abc.01564611564.txt: 00:00:06.9534773 
abc.xml:    00:00:06.9368894 
abc.xml.01564611564: 00:00:07.9326258 
abc.config:    00:00:07.9074675 
abc.config.01564611564: 00:00:08.0205423 
abc.exe:    00:00:21.2559372 
abc.exe.01564611564: 00:00:07.2417322 
abc.log:    00:00:07.0871043 
abc.log.01564611564: 00:00:07.1848522 

En mi caso, fue solo la extensión .exe que tomó más tiempo.

Así que sí, supongo que el antivirus está interfiriendo con las velocidades de escritura.

Editar: Debo señalar que este usuario es un Usuario limitado en un dominio de AD.

Cuestiones relacionadas