2016-03-22 4 views
-1

Ich habe eine Methode erstellt, um die Gesamtzeit aufzuzeichnen, die zum Schreiben einer Datei benötigt wird.Record mb/sec Beim Schreiben einer Datei C#

Wie kann ich dies erweitern, um aufzuzeichnen, wie viele Megabytes die Methode pro Sekunde an mein StringBuilder-Objekt schreibt? Ich bin vorbei in GB

private string CreateLongRunningDummyFile(int fileSizeGb, string filePath) 
     { 
      StringBuilder sb=new StringBuilder(); 

      Stopwatch sw = new Stopwatch(); 
      sw.Start(); 

      int fileSizeMb = fileSizeGb * 1024; 

      try 
      { 
       const int blockSize = 1024 * 8; 
       const int blocksPerMb = (1024 * 1024)/blockSize; 
       byte[] data = new byte[blockSize]; 
       Random rng = new Random(); 
       using (FileStream stream = File.OpenWrite(filePath)) 
       { 
        // There 
        for (int i = 0; i < fileSizeMb * blocksPerMb; i++) 
        { 
         rng.NextBytes(data); 
         stream.Write(data, 0, data.Length); 
        } 
       } 

       sw.Stop(); 

       File.Delete(filePath); 

      } 
      catch (Exception ex) 
      { 

       sw.Stop(); 
      } 

      sb.AppendLine(string.Format("Elaspsed Time: {0}sec",sw.Elapsed.TotalSeconds.ToString())); 

      return sb.ToString(); 
     } 
+0

Was mit nicht funktioniert, was Sie haben? Sei genau. –

+0

Wie genau möchten Sie das aufnehmen? Zu Ihrem StringBuilder, zu der Konsole, zu einer Textdatei, zum Ereignisprotokoll, zu einer Datenbank, zu einer GUI? Die Idee hier ist zu versuchen, das Problem zu lösen und um Hilfe zu bitten, anstatt eine Idee zu präsentieren und darum zu bitten, dass sie umgesetzt wird. –

+1

Wenn es 10mb in 2s schrieb, wie viele mb/s wäre das? Und wie hast du das herausgefunden? Jetzt bringen Sie den Computer dazu, dasselbe zu tun, was Sie getan haben, und Sie sind fertig. –

Antwort

0

einige Mathematik tun

var rate = fileSizeGb/1024/sw.Elapsed.TotalSeconds; 
Verwandte Themen