Hard Disk Benchmark σε C#
Πριν μερικες μερες εγινα ευτυχης κατοχος ενος SSD Samsung 830 256gb και ειπα να γραψω ενα μικρο προγραμματακι σε c# για να δω τι ψαρια πιανει. Για την ακριβεια αυτο που εφτιαξα δημιουργει εναν φακελο μεσα στο mydocuments folder και τον γεμιζει με 100.000 αδεια αρχεια. Αυτα τα αρχεια μεσω της Path.GetRandomFilename εχουν ενα τυχαιο ονομα οποτε δεν υπαρχει η περιπτωση conflict.
Αν ο χρηστης τρεξει το προγραμμα παραπανω απο μια φορα τοτε αρχικα σβηνει αυτα τα αρχεια και μετα ξεκιναει την δημιουργια των νεων. Για να μετρησω το χρονο χρησιμοποιησα την γνωστη Stopwatch class οπου με το .ElapsedMilliseconds παιρνω μετρηση και ανα 10% εκτος απο το τελικο αποτελεσμα.
Ο κωδικας εχει ως εξης:
using System; using System.IO; using System.Diagnostics; namespace hddbench { class Program { static void Main(string[] args) { string thePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); thePath += @"HddBenchTestFolder"; Stopwatch stopwatch = new Stopwatch(); if (Directory.Exists(thePath)) { Console.WriteLine("Deleting files from temp bench folder, please wait."); Directory.Delete(thePath, true); } stopwatch.Start(); Directory.CreateDirectory(thePath); Console.WriteLine("Creating 100.000 files in temp bench folder"); Console.WriteLine(); for (int i = 0; i < 100000; i++ ) { string randomfilename = Path.GetRandomFileName(); string theFile = thePath + @"" + randomfilename; File.Create(theFile); if(i == 10000) { Console.WriteLine("Time at 10% {0}ms",stopwatch.ElapsedMilliseconds); } if (i == 20000) { Console.WriteLine("Time at 20% {0}ms", stopwatch.ElapsedMilliseconds); } if (i == 30000) { Console.WriteLine("Time at 30% {0}ms", stopwatch.ElapsedMilliseconds); } if (i == 40000) { Console.WriteLine("Time at 40% {0}ms", stopwatch.ElapsedMilliseconds); } if (i == 50000) { Console.WriteLine("Time at 50% {0}ms", stopwatch.ElapsedMilliseconds); } if (i == 60000) { Console.WriteLine("Time at 60% {0}ms", stopwatch.ElapsedMilliseconds); } if (i == 70000) { Console.WriteLine("Time at 70% {0}ms", stopwatch.ElapsedMilliseconds); } if (i == 80000) { Console.WriteLine("Time at 80% {0}ms", stopwatch.ElapsedMilliseconds); } if (i == 90000) { Console.WriteLine("Time at 90% {0}ms", stopwatch.ElapsedMilliseconds); } } stopwatch.Stop(); Console.WriteLine("Total creation time for 100.000 files is {0}ms", stopwatch.ElapsedMilliseconds); Console.ReadLine(); } } }
Οταν το εκτελεσετε θα δειτε κατι τετοιο:
Μπορειτε να κατεβασετε το παρακατω zip αρχειο που περιεχει ολο τον κωδικα. Οσοι θελουν μπορουν να τρεξουν κατευθειαν το exe αρχειο απο τον bin folder. Εσας τι χρονο βγαζει;