2010-07-09 8 views
11

Je suis actuellement en train de tester les performances de différentes méthodes de consignation de données de texte dans un fichier. Il semble que lorsque j'ouvre/écrive/ferme une grande quantité de fois, l'extension utilisée affecte la performance. (Txt et .log sont environ 7 fois plus rapide)Pourquoi l'extension de fichier affecte-t-elle la vitesse d'écriture? (C#, StreamWriter)

Code utilisé:

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(); 
} 

Résultats:

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 

Pourquoi cela se produit?

+14

L'antivirus a été désactivé, j'espère? –

+2

@orsol qui sur terre court AV au lieu de simplement RANU? – Will

+0

@Will Qu'est-ce que RANU? –

Répondre

15

Apparemment, une autre application ou un autre processus lit ou surveille les fichiers écrits et ignore les fichiers .txt ou .log pour des raisons de performances.

Pourquoi? Parce que votre paquet de code, lorsqu'il est exécuté sur mon ordinateur portable, donne les mêmes résultats pour tous les fichiers (22 secondes), sans aucune variation.

+0

Wow je n'aurais jamais pensé à mon antivirus, merci pour la réponse rapide –

5

Comme Orsol l'a suggéré, votre AV peut ignorer les fichiers txt et log.

6

J'ai testé ceci sur ma machine de travail; une machine Core 2 avec Windows XP 32 bits avec Symantec Endpoint Protection AV installée. Voici mes résultats:

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 

Dans mon cas, seule l'extension .exe a pris plus de temps.

Alors oui, à première vue, l'anti-virus interfère avec les vitesses d'écriture.

Modifier: Je devrais noter, cet utilisateur est un utilisateur limité sur un domaine AD.