From 56e24f1ed902863762661641d1fddba3b316097c Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 3 Jan 2020 18:13:57 +0000 Subject: [PATCH] Remove benchmark command. --- .../.idea/contentModel.xml | 5 +- DiscImageChef.CommonTypes | 2 +- DiscImageChef.Console | 2 +- DiscImageChef.Core/Benchmark.cs | 583 ------------------ DiscImageChef.Core/DiscImageChef.Core.csproj | 1 - DiscImageChef.Core/Statistics.cs | 12 - DiscImageChef.Decoders | 2 +- DiscImageChef.Dto | 2 +- DiscImageChef.Gui/Dialogs/dlgBenchmark.xeto | 76 --- .../Dialogs/dlgBenchmark.xeto.cs | 185 ------ DiscImageChef.Gui/Dialogs/dlgSettings.xeto | 1 - DiscImageChef.Gui/Dialogs/dlgSettings.xeto.cs | 25 +- DiscImageChef.Gui/Dialogs/dlgStatistics.xeto | 1 - .../Dialogs/dlgStatistics.xeto.cs | 301 ++++++--- DiscImageChef.Gui/Forms/frmMain.xeto | 1 - DiscImageChef.Gui/Forms/frmMain.xeto.cs | 8 +- DiscImageChef.Helpers | 2 +- DiscImageChef.Settings/Settings.cs | 385 ++++++------ DiscImageChef/Commands/Benchmark.cs | 117 ---- DiscImageChef/Commands/Configure.cs | 12 - DiscImageChef/DiscImageChef.csproj | 3 - DiscImageChef/Main.cs | 1 - 22 files changed, 420 insertions(+), 1307 deletions(-) delete mode 100644 DiscImageChef.Core/Benchmark.cs delete mode 100644 DiscImageChef.Gui/Dialogs/dlgBenchmark.xeto delete mode 100644 DiscImageChef.Gui/Dialogs/dlgBenchmark.xeto.cs delete mode 100644 DiscImageChef/Commands/Benchmark.cs diff --git a/.idea/.idea.DiscImageChef/.idea/contentModel.xml b/.idea/.idea.DiscImageChef/.idea/contentModel.xml index c9d916706..9317b7a0e 100644 --- a/.idea/.idea.DiscImageChef/.idea/contentModel.xml +++ b/.idea/.idea.DiscImageChef/.idea/contentModel.xml @@ -26,7 +26,6 @@ - @@ -241,7 +240,6 @@ - @@ -509,6 +507,7 @@ + @@ -1811,8 +1810,6 @@ - - diff --git a/DiscImageChef.CommonTypes b/DiscImageChef.CommonTypes index 02e6c1917..1bd15feee 160000 --- a/DiscImageChef.CommonTypes +++ b/DiscImageChef.CommonTypes @@ -1 +1 @@ -Subproject commit 02e6c1917628515273c5d8f7cd5a2b54cc7e67d3 +Subproject commit 1bd15feee6672c8abde790609018b819c0478c8b diff --git a/DiscImageChef.Console b/DiscImageChef.Console index cf809e896..700793ae1 160000 --- a/DiscImageChef.Console +++ b/DiscImageChef.Console @@ -1 +1 @@ -Subproject commit cf809e896fb98b76899200c9ab0fdc9402a9e56a +Subproject commit 700793ae191f55b5872b7b7d7341aba60c82256b diff --git a/DiscImageChef.Core/Benchmark.cs b/DiscImageChef.Core/Benchmark.cs deleted file mode 100644 index 31600a01a..000000000 --- a/DiscImageChef.Core/Benchmark.cs +++ /dev/null @@ -1,583 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Benchmark.cs -// Author(s) : Natalia Portillo -// -// Component : Core algorithms. -// -// --[ Description ] ---------------------------------------------------------- -// -// Benchmarks DiscImageChef hashing and checksumming speeds. -// -// --[ License ] -------------------------------------------------------------- -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as -// published by the Free Software Foundation, either version 3 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2020 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.Collections.Generic; -using System.IO; -using DiscImageChef.Checksums; -using DiscImageChef.CommonTypes.Interfaces; - -namespace DiscImageChef.Core -{ - public struct BenchmarkResults - { - public double FillTime; - public double FillSpeed; - public double ReadTime; - public double ReadSpeed; - public double EntropyTime; - public double EntropySpeed; - public Dictionary Entries; - public long MinMemory; - public long MaxMemory; - public double SeparateTime; - public double SeparateSpeed; - public double TotalTime; - public double TotalSpeed; - } - - public struct BenchmarkEntry - { - public double TimeSpan; - public double Speed; - } - - /// - /// Benchmarks the speed at which we can do checksums - /// - public static class Benchmark - { - public static event InitProgressHandler InitProgressEvent; - public static event UpdateProgressHandler UpdateProgressEvent; - public static event EndProgressHandler EndProgressEvent; - - static void InitProgress() - { - InitProgressEvent?.Invoke(); - } - - static void UpdateProgress(string text, int current, int maximum) - { - UpdateProgressEvent?.Invoke(string.Format(text, current, maximum), current, maximum); - } - - static void EndProgress() - { - EndProgressEvent?.Invoke(); - } - - public static BenchmarkResults Do(int bufferSize, int blockSize) - { - BenchmarkResults results = new BenchmarkResults - { - Entries = new Dictionary(), - MinMemory = long.MaxValue, - MaxMemory = 0, - SeparateTime = 0 - }; - MemoryStream ms = new MemoryStream(bufferSize); - Random rnd = new Random(); - DateTime start; - DateTime end; - - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Writing block {0} of {1} with random data.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - rnd.NextBytes(tmp); - ms.Write(tmp, 0, blockSize); - } - - EndProgress(); - end = DateTime.Now; - - results.FillTime = (end - start).TotalSeconds; - results.FillSpeed = bufferSize / 1048576.0 / (end - start).TotalSeconds; - - ms.Seek(0, SeekOrigin.Begin); - long mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Reading block {0} of {1}.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - } - - EndProgress(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.ReadTime = (end - start).TotalSeconds; - results.ReadSpeed = bufferSize / 1048576.0 / (end - start).TotalSeconds; - - #region Adler32 - IChecksum ctx = new Adler32Context(); - ms.Seek(0, SeekOrigin.Begin); - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Checksumming block {0} of {1} with Adler32.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - ctx.Update(tmp); - } - - EndProgress(); - ctx.End(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.Entries.Add("Adler32", - new BenchmarkEntry - { - TimeSpan = (end - start).TotalSeconds, - Speed = bufferSize / 1048576.0 / (end - start).TotalSeconds - }); - results.SeparateTime += (end - start).TotalSeconds; - #endregion Adler32 - - #region Fletcher16 - ctx = new Fletcher16Context(); - ms.Seek(0, SeekOrigin.Begin); - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Checksumming block {0} of {1} with Fletcher-16.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - ctx.Update(tmp); - } - - EndProgress(); - ctx.End(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.Entries.Add("Fletcher16", - new BenchmarkEntry - { - TimeSpan = (end - start).TotalSeconds, - Speed = bufferSize / 1048576.0 / (end - start).TotalSeconds - }); - results.SeparateTime += (end - start).TotalSeconds; - #endregion Fletcher16 - - #region Fletcher32 - ctx = new Fletcher32Context(); - ms.Seek(0, SeekOrigin.Begin); - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Checksumming block {0} of {1} with Fletcher-32.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - ctx.Update(tmp); - } - - EndProgress(); - ctx.End(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.Entries.Add("Fletcher32", - new BenchmarkEntry - { - TimeSpan = (end - start).TotalSeconds, - Speed = bufferSize / 1048576.0 / (end - start).TotalSeconds - }); - results.SeparateTime += (end - start).TotalSeconds; - #endregion Fletcher32 - - #region CRC16 - ctx = new Crc16Context(); - ms.Seek(0, SeekOrigin.Begin); - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Checksumming block {0} of {1} with CRC16.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - ctx.Update(tmp); - } - - EndProgress(); - ctx.End(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.Entries.Add("CRC16", - new BenchmarkEntry - { - TimeSpan = (end - start).TotalSeconds, - Speed = bufferSize / 1048576.0 / (end - start).TotalSeconds - }); - results.SeparateTime += (end - start).TotalSeconds; - #endregion CRC16 - - #region CRC32 - ctx = new Crc32Context(); - ms.Seek(0, SeekOrigin.Begin); - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Checksumming block {0} of {1} with CRC32.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - ctx.Update(tmp); - } - - EndProgress(); - ctx.End(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.Entries.Add("CRC32", - new BenchmarkEntry - { - TimeSpan = (end - start).TotalSeconds, - Speed = bufferSize / 1048576.0 / (end - start).TotalSeconds - }); - results.SeparateTime += (end - start).TotalSeconds; - #endregion CRC32 - - #region CRC64 - ctx = new Crc64Context(); - ms.Seek(0, SeekOrigin.Begin); - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Checksumming block {0} of {1} with CRC64.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - ctx.Update(tmp); - } - - EndProgress(); - ctx.End(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.Entries.Add("CRC64", - new BenchmarkEntry - { - TimeSpan = (end - start).TotalSeconds, - Speed = bufferSize / 1048576.0 / (end - start).TotalSeconds - }); - results.SeparateTime += (end - start).TotalSeconds; - #endregion CRC64 - - #region MD5 - ctx = new Md5Context(); - ms.Seek(0, SeekOrigin.Begin); - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Checksumming block {0} of {1} with MD5.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - ctx.Update(tmp); - } - - EndProgress(); - ctx.End(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.Entries.Add("MD5", - new BenchmarkEntry - { - TimeSpan = (end - start).TotalSeconds, - Speed = bufferSize / 1048576.0 / (end - start).TotalSeconds - }); - results.SeparateTime += (end - start).TotalSeconds; - #endregion MD5 - - #region SHA1 - ctx = new Sha1Context(); - ms.Seek(0, SeekOrigin.Begin); - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Checksumming block {0} of {1} with SHA1.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - ctx.Update(tmp); - } - - EndProgress(); - ctx.End(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.Entries.Add("SHA1", - new BenchmarkEntry - { - TimeSpan = (end - start).TotalSeconds, - Speed = bufferSize / 1048576.0 / (end - start).TotalSeconds - }); - results.SeparateTime += (end - start).TotalSeconds; - #endregion SHA1 - - #region SHA256 - ctx = new Sha256Context(); - ms.Seek(0, SeekOrigin.Begin); - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Checksumming block {0} of {1} with SHA256.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - ctx.Update(tmp); - } - - EndProgress(); - ctx.End(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.Entries.Add("SHA256", - new BenchmarkEntry - { - TimeSpan = (end - start).TotalSeconds, - Speed = bufferSize / 1048576.0 / (end - start).TotalSeconds - }); - results.SeparateTime += (end - start).TotalSeconds; - #endregion SHA256 - - #region SHA384 - ctx = new Sha384Context(); - ms.Seek(0, SeekOrigin.Begin); - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Checksumming block {0} of {1} with SHA384.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - ctx.Update(tmp); - } - - EndProgress(); - ctx.End(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.Entries.Add("SHA384", - new BenchmarkEntry - { - TimeSpan = (end - start).TotalSeconds, - Speed = bufferSize / 1048576.0 / (end - start).TotalSeconds - }); - results.SeparateTime += (end - start).TotalSeconds; - #endregion SHA384 - - #region SHA512 - ctx = new Sha512Context(); - ms.Seek(0, SeekOrigin.Begin); - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Checksumming block {0} of {1} with SHA512.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - ctx.Update(tmp); - } - - EndProgress(); - ctx.End(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.Entries.Add("SHA512", - new BenchmarkEntry - { - TimeSpan = (end - start).TotalSeconds, - Speed = bufferSize / 1048576.0 / (end - start).TotalSeconds - }); - results.SeparateTime += (end - start).TotalSeconds; - #endregion SHA512 - - #region SpamSum - ctx = new SpamSumContext(); - ms.Seek(0, SeekOrigin.Begin); - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Checksumming block {0} of {1} with SpamSum.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - ctx.Update(tmp); - } - - EndProgress(); - ctx.End(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.Entries.Add("SpamSum", - new BenchmarkEntry - { - TimeSpan = (end - start).TotalSeconds, - Speed = bufferSize / 1048576.0 / (end - start).TotalSeconds - }); - results.SeparateTime += (end - start).TotalSeconds; - #endregion SpamSum - - #region Entropy - ulong[] entTable = new ulong[256]; - ms.Seek(0, SeekOrigin.Begin); - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - start = DateTime.Now; - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Entropying block {0} of {1}.", i + 1, bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - foreach(byte b in tmp) entTable[b]++; - } - - EndProgress(); - - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.EntropyTime = (end - start).TotalSeconds; - results.EntropySpeed = bufferSize / 1048576.0 / (end - start).TotalSeconds; - #endregion Entropy - - /* - #region Multitasking - start = DateTime.Now; - Checksum allChecksums = new Checksum(); - InitProgress(); - for(int i = 0; i < bufferSize / blockSize; i++) - { - UpdateProgress("Checksumming block {0} of {1} with all algorithms at the same time.", i + 1, - bufferSize / blockSize); - byte[] tmp = new byte[blockSize]; - ms.Read(tmp, 0, blockSize); - - allChecksums.Update(tmp); - } - - EndProgress(); - - allChecksums.End(); - end = DateTime.Now; - mem = GC.GetTotalMemory(false); - if(mem > results.MaxMemory) results.MaxMemory = mem; - if(mem < results.MinMemory) results.MinMemory = mem; - - results.TotalTime = (end - start).TotalSeconds; - results.TotalSpeed = bufferSize / 1048576.0 / results.TotalTime; - #endregion - */ - results.SeparateSpeed = bufferSize / 1048576.0 / results.SeparateTime; - - return results; - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Core/DiscImageChef.Core.csproj b/DiscImageChef.Core/DiscImageChef.Core.csproj index 0dbe2c42c..13e8ea032 100644 --- a/DiscImageChef.Core/DiscImageChef.Core.csproj +++ b/DiscImageChef.Core/DiscImageChef.Core.csproj @@ -93,7 +93,6 @@ - diff --git a/DiscImageChef.Core/Statistics.cs b/DiscImageChef.Core/Statistics.cs index 85034b995..3d7b6c2f4 100644 --- a/DiscImageChef.Core/Statistics.cs +++ b/DiscImageChef.Core/Statistics.cs @@ -86,18 +86,6 @@ namespace DiscImageChef.Core ctx.Commands.Update(command); } - if(allStats.Commands.Benchmark > 0) - { - Command command = - ctx.Commands.FirstOrDefault(c => c.Name == "benchmark" && c.Synchronized) ?? new Command - { - Name = "benchmark", Synchronized = true - }; - - command.Count += (ulong)allStats.Commands.Benchmark; - ctx.Commands.Update(command); - } - if(allStats.Commands.Checksum > 0) { Command command = diff --git a/DiscImageChef.Decoders b/DiscImageChef.Decoders index 8eea6af40..785638f5f 160000 --- a/DiscImageChef.Decoders +++ b/DiscImageChef.Decoders @@ -1 +1 @@ -Subproject commit 8eea6af409f259f6b7f4773ddc75ef06dee20b0f +Subproject commit 785638f5f6b9d31886ca7f3f75acf406cab84398 diff --git a/DiscImageChef.Dto b/DiscImageChef.Dto index 2f65814ec..89d1a5faf 160000 --- a/DiscImageChef.Dto +++ b/DiscImageChef.Dto @@ -1 +1 @@ -Subproject commit 2f65814ecc4b24fef4f7e7eda549b223a58fc3b0 +Subproject commit 89d1a5fafc305be5e64657b85aa5848065adf5b6 diff --git a/DiscImageChef.Gui/Dialogs/dlgBenchmark.xeto b/DiscImageChef.Gui/Dialogs/dlgBenchmark.xeto deleted file mode 100644 index 6aff3e081..000000000 --- a/DiscImageChef.Gui/Dialogs/dlgBenchmark.xeto +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/DiscImageChef.Gui/Dialogs/dlgBenchmark.xeto.cs b/DiscImageChef.Gui/Dialogs/dlgBenchmark.xeto.cs deleted file mode 100644 index aed21d590..000000000 --- a/DiscImageChef.Gui/Dialogs/dlgBenchmark.xeto.cs +++ /dev/null @@ -1,185 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : dlgBenchmark.xeto.cs -// Author(s) : Natalia Portillo -// -// Component : Benchmark dialog. -// -// --[ Description ] ---------------------------------------------------------- -// -// Implements the benchmark dialog. -// -// --[ License ] -------------------------------------------------------------- -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General public License as -// published by the Free Software Foundation, either version 3 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General public License for more details. -// -// You should have received a copy of the GNU General public License -// along with this program. If not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2020 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.Collections.Generic; -using System.Threading; -using DiscImageChef.Core; -using Eto.Drawing; -using Eto.Forms; -using Eto.Serialization.Xaml; - -namespace DiscImageChef.Gui.Dialogs -{ - public class dlgBenchmark : Dialog - { - Dictionary checksumTimes; - int counter; - BenchmarkResults results; - int step; - - public dlgBenchmark() - { - XamlReader.Load(this); - } - - protected void OnBtnStart(object sender, EventArgs e) - { - checksumTimes = new Dictionary(); - Benchmark.UpdateProgressEvent += UpdateProgress; - stkProgress.Visible = true; - lblProgress.Text = ""; - btnClose.Enabled = false; - btnStart.Enabled = false; - nmuBufferSize.Enabled = false; - nmuBlockSize.Enabled = false; - - Thread thread = new Thread(() => - { - counter = step = (int)(nmuBufferSize.Value * 1024 * 1024 / nmuBlockSize.Value) % 3333; - // TODO: Able to cancel! - results = Benchmark.Do((int)(nmuBufferSize.Value * 1024 * 1024), (int)nmuBlockSize.Value); - - Application.Instance.Invoke(Finish); - }); - - thread.Start(); - } - - void Finish() - { - Benchmark.UpdateProgressEvent += UpdateProgress; - StackLayout stkCalculationResults = new StackLayout(); - - stkCalculationResults.Items.Add(new Label - { - Text = - $"Took {results.FillTime} seconds to fill buffer, {results.FillSpeed:F3} MiB/sec." - }); - stkCalculationResults.Items.Add(new Label - { - Text = - $"Took {results.ReadTime} seconds to read buffer, {results.ReadSpeed:F3} MiB/sec." - }); - stkCalculationResults.Items.Add(new Label - { - Text = - $"Took {results.EntropyTime} seconds to entropy buffer, {results.EntropySpeed:F3} MiB/sec." - }); - - foreach(KeyValuePair entry in results.Entries) - { - checksumTimes.Add(entry.Key, entry.Value.TimeSpan); - stkCalculationResults.Items.Add(new Label - { - Text = - $"Took {entry.Value.TimeSpan} seconds to {entry.Key} buffer, {entry.Value.Speed:F3} MiB/sec." - }); - ; - } - - stkCalculationResults.Items.Add(new Label - { - Text = - $"Took {results.TotalTime} seconds to do all algorithms at the same time, {results.TotalSpeed:F3} MiB/sec." - }); - stkCalculationResults.Items.Add(new Label - { - Text = - $"Took {results.SeparateTime} seconds to do all algorithms sequentially, {results.SeparateSpeed:F3} MiB/sec." - }); - stkCalculationResults.Items.Add(new Label {Text = $"Max memory used is {results.MaxMemory} bytes"}); - stkCalculationResults.Items.Add(new Label {Text = $"Min memory used is {results.MinMemory} bytes"}); - - Statistics.AddCommand("benchmark"); - - stkCalculationResults.Items.Add(new StackLayoutItem(stkButtons, HorizontalAlignment.Right, true)); - stkCalculationResults.Visible = true; - btnStart.Visible = false; - btnClose.Enabled = true; - Content = stkCalculationResults; - ClientSize = new Size(-1, -1); - } - - void UpdateProgress(string text, long current, long maximum) - { - if(counter < step) - { - counter++; - return; - } - - counter = 0; - - Application.Instance.Invoke(() => - { - lblProgress.Text = text; - - if(maximum == 0) - { - prgProgress.Indeterminate = true; - return; - } - - if(prgProgress.Indeterminate) prgProgress.Indeterminate = false; - - if(maximum > int.MaxValue || current > int.MaxValue) - { - prgProgress.MaxValue = (int)(maximum / int.MaxValue); - prgProgress.Value = (int)(current / int.MaxValue); - } - else - { - prgProgress.MaxValue = (int)maximum; - prgProgress.Value = (int)current; - } - }); - } - - protected void OnBtnClose(object sender, EventArgs e) - { - Close(); - } - - #region XAML controls - NumericStepper nmuBufferSize; - NumericStepper nmuBlockSize; - StackLayout stkProgress; - Label lblProgress; - ProgressBar prgProgress; - Button btnStart; - Button btnClose; - StackLayout stkPreCalculation; - StackLayout stkButtons; - #endregion - } -} \ No newline at end of file diff --git a/DiscImageChef.Gui/Dialogs/dlgSettings.xeto b/DiscImageChef.Gui/Dialogs/dlgSettings.xeto index 9cef16725..8cb794baa 100644 --- a/DiscImageChef.Gui/Dialogs/dlgSettings.xeto +++ b/DiscImageChef.Gui/Dialogs/dlgSettings.xeto @@ -64,7 +64,6 @@