From 078b701b7997b985b5e82ecb3e8c569a6e33009e Mon Sep 17 00:00:00 2001 From: Dimitar Byalkov Date: Tue, 13 Jul 2021 12:42:21 +0300 Subject: [PATCH] Execution time and warnings --- .../Properties/launchSettings.json | 2 +- .../BoerseDataConvert/Views/Program.cs | 8 ++++--- .../BoerseDataConvert/Views/Reader.cs | 20 ++++++++++++------ BoerseDataConvert/Документация.docx | Bin 38157 -> 38369 bytes 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/BoerseDataConvert/BoerseDataConvert/Properties/launchSettings.json b/BoerseDataConvert/BoerseDataConvert/Properties/launchSettings.json index 1467116..3708d10 100644 --- a/BoerseDataConvert/BoerseDataConvert/Properties/launchSettings.json +++ b/BoerseDataConvert/BoerseDataConvert/Properties/launchSettings.json @@ -2,7 +2,7 @@ "profiles": { "BoerseDataConvert": { "commandName": "Project", - "commandLineArgs": "-i smalldata.zip -d input -o output" + "commandLineArgs": "-i bigdata.zip -d input -o output" } } } \ No newline at end of file diff --git a/BoerseDataConvert/BoerseDataConvert/Views/Program.cs b/BoerseDataConvert/BoerseDataConvert/Views/Program.cs index 471f770..dd460a8 100644 --- a/BoerseDataConvert/BoerseDataConvert/Views/Program.cs +++ b/BoerseDataConvert/BoerseDataConvert/Views/Program.cs @@ -4,6 +4,7 @@ using System.IO; using System.IO.Compression; using System.Linq; using Mono.Options; +using System.Diagnostics; namespace BoerseDataConvert { @@ -79,7 +80,8 @@ namespace BoerseDataConvert Reader reader = new Reader(inputDirectory, fileNames); RecordController a = new RecordController(outputDirectory, fileNames[0], tagsFile); - + Stopwatch totalRunTime = new Stopwatch(); + totalRunTime.Start(); while (true) { try @@ -89,12 +91,12 @@ namespace BoerseDataConvert } catch (IndexOutOfRangeException) { - Reader.EndFile(); RecordController.EndFile(); break; } } - Console.WriteLine("INFO: Successful conversion, exiting"); + totalRunTime.Stop(); + Console.WriteLine($"INFO: Successful conversion in {totalRunTime.Elapsed:c}, exiting"); Environment.Exit(0); } static void CheckFreeDisk(string zipFile, string outputDirectory) diff --git a/BoerseDataConvert/BoerseDataConvert/Views/Reader.cs b/BoerseDataConvert/BoerseDataConvert/Views/Reader.cs index f196e15..384c5db 100644 --- a/BoerseDataConvert/BoerseDataConvert/Views/Reader.cs +++ b/BoerseDataConvert/BoerseDataConvert/Views/Reader.cs @@ -5,22 +5,25 @@ using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Diagnostics; namespace BoerseDataConvert { public class Reader { - private string[] filesNames; + static Stopwatch stopwatch = new Stopwatch(); + private static string[] filesNames; private static StreamReader reader; - private int fileInd; + private static int fileInd; private string adr; - public Reader(string adr, string[] filesNames) + public Reader(string adr, string[] _filesNames) { fileInd = 0; - reader = new StreamReader($@"{adr}/{filesNames[fileInd]}", CodePagesEncodingProvider.Instance.GetEncoding(1252)); + reader = new StreamReader($@"{adr}/{_filesNames[fileInd]}", CodePagesEncodingProvider.Instance.GetEncoding(1252)); this.adr = adr; - this.filesNames = filesNames; + filesNames = _filesNames; string date = reader.ReadLine(); + stopwatch.Start(); CheckFirstLine(date); } public Record ReadLineRecord() @@ -29,9 +32,9 @@ namespace BoerseDataConvert if (reader.EndOfStream) { CheckFinalLine(s); - Console.WriteLine($"INFO: { filesNames[fileInd] } was converted successfully"); - fileInd++; EndFile(); + fileInd++; + stopwatch.Start(); reader = new StreamReader($@"{adr}/{filesNames[fileInd]}", CodePagesEncodingProvider.Instance.GetEncoding(1252)); RecordController.NextFile(filesNames[fileInd]); string date = reader.ReadLine(); @@ -88,6 +91,9 @@ namespace BoerseDataConvert internal static void EndFile() { reader.Close(); + stopwatch.Stop(); + Console.WriteLine($"INFO: { filesNames[fileInd] } was converted successfully in {stopwatch.Elapsed:c}"); + stopwatch.Reset(); } } } diff --git a/BoerseDataConvert/Документация.docx b/BoerseDataConvert/Документация.docx index bf55a5063dd38797b60a79c34fb317f8c1c49f2d..69f984bbf91e284a102ddb9ac529c03b45f3e59d 100644 GIT binary patch delta 15760 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 delta 15604 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