ToolPack1
Changes
.gitignore 3(+3 -0)
Build/SimpleBenchmark.dll 0(+0 -0)
Build/SimpleBenchmark.pdb 0(+0 -0)
ToolPack1/SimpleBenchmark/TimeTester.cs 46(+46 -0)
ToolPack1/SimpleBenchmark/TimeTestResult.cs 43(+43 -0)
ToolPack1/SimpleBenchmark/WorkTime.cs 37(+37 -0)
ToolPack1/ToolPack1.sln 7(+7 -0)
Details
.gitignore 3(+3 -0)
diff --git a/.gitignore b/.gitignore
index 575328a..da53351 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,6 @@ ToolPack1/ConfigurationTool/obj/
ToolPack1/SingletonTool/bin/
ToolPack1/SingletonTool/obj/
+
+ToolPack1/SimpleBenchmark/bin/
+ToolPack1/SimpleBenchmark/obj/
Build/SimpleBenchmark.dll 0(+0 -0)
diff --git a/Build/SimpleBenchmark.dll b/Build/SimpleBenchmark.dll
new file mode 100644
index 0000000..2e6c711
Binary files /dev/null and b/Build/SimpleBenchmark.dll differ
Build/SimpleBenchmark.pdb 0(+0 -0)
diff --git a/Build/SimpleBenchmark.pdb b/Build/SimpleBenchmark.pdb
new file mode 100644
index 0000000..cade54e
Binary files /dev/null and b/Build/SimpleBenchmark.pdb differ
diff --git a/ToolPack1/SimpleBenchmark/Properties/AssemblyInfo.cs b/ToolPack1/SimpleBenchmark/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..87a61c5
--- /dev/null
+++ b/ToolPack1/SimpleBenchmark/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Общие сведения об этой сборке предоставляются следующим набором
+// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
+// связанные со сборкой.
+[assembly: AssemblyTitle("SimpleBenchmark")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("SimpleBenchmark")]
+[assembly: AssemblyCopyright("Copyright © 2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
+// для компонентов COM. Если необходимо обратиться к типу в этой сборке через
+// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
+[assembly: ComVisible(false)]
+
+// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
+[assembly: Guid("f862bc1f-abc5-4c80-9210-1722da94a04c")]
+
+// Сведения о версии сборки состоят из следующих четырех значений:
+//
+// Основной номер версии
+// Дополнительный номер версии
+// Номер сборки
+// Редакция
+//
+// Можно задать все значения или принять номер сборки и номер редакции по умолчанию.
+// используя "*", как показано ниже:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/ToolPack1/SimpleBenchmark/SimpleBenchmark.csproj b/ToolPack1/SimpleBenchmark/SimpleBenchmark.csproj
new file mode 100644
index 0000000..da3d378
--- /dev/null
+++ b/ToolPack1/SimpleBenchmark/SimpleBenchmark.csproj
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{F862BC1F-ABC5-4C80-9210-1722DA94A04C}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>SimpleBenchmark</RootNamespace>
+ <AssemblyName>SimpleBenchmark</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <Deterministic>true</Deterministic>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="TimeTester.cs" />
+ <Compile Include="TimeTestResult.cs" />
+ <Compile Include="WorkTime.cs" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>
\ No newline at end of file
ToolPack1/SimpleBenchmark/TimeTester.cs 46(+46 -0)
diff --git a/ToolPack1/SimpleBenchmark/TimeTester.cs b/ToolPack1/SimpleBenchmark/TimeTester.cs
new file mode 100644
index 0000000..3f1fd38
--- /dev/null
+++ b/ToolPack1/SimpleBenchmark/TimeTester.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using System.Diagnostics;
+
+namespace SimpleBenchmark
+{
+ //Тестер для проверки времениработы
+ public class TimeTester
+ {
+ /// <summary>
+ /// Функция проверка времени выполнения
+ /// </summary>
+ /// <param name="TestCount">Кол-во тестовых запусков</param>
+ /// <param name="action">Задание для проверки</param>
+ /// <param name="Preheating">Выполнить предварительный тестовый запуск делегата</param>
+ /// <returns></returns>
+ public TimeTestResult Work(int TestCount, Action action, bool Preheating = true)
+ {
+ if (Preheating)
+ action();
+
+ TimeTestResult res = new TimeTestResult(TestCount);
+
+ Stopwatch stopwatch = new Stopwatch();
+
+ for (int i = 0; i < TestCount; i++)
+ {
+
+ stopwatch.Start();
+ action();
+ stopwatch.Stop();
+
+ res[i] = new WorkTime(stopwatch);
+
+ stopwatch.Reset();
+ }
+
+
+ return res;
+ }
+
+ }
+}
ToolPack1/SimpleBenchmark/TimeTestResult.cs 43(+43 -0)
diff --git a/ToolPack1/SimpleBenchmark/TimeTestResult.cs b/ToolPack1/SimpleBenchmark/TimeTestResult.cs
new file mode 100644
index 0000000..69cc6a0
--- /dev/null
+++ b/ToolPack1/SimpleBenchmark/TimeTestResult.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace SimpleBenchmark
+{
+
+ //Результаты работы теста времени выполнения
+ public class TimeTestResult : IEnumerable<WorkTime>
+ {
+ WorkTime[] times { get; }
+ public int Length => times.Length;
+
+ public WorkTime this[int i]
+ {
+ set => times[i] = value;
+ get => times[i];
+ }
+
+
+ //Среднее для Elapsed
+ public TimeSpan Elapsed_Average => new TimeSpan(0, 0, 0, 0,
+ (int)(times.Sum(e => e.Elapsed.TotalMilliseconds) / times.Length));
+ //Среднее для ElapsedMilliseconds
+ public double ElapsedMilliseconds_Average => times.Sum(e => e.ElapsedMilliseconds) / times.Length;
+ //Среднее для ElapsedTicks
+ public double ElapsedTicks_Average => times.Sum(e => e.ElapsedTicks) / times.Length;
+
+
+ public TimeTestResult(int TestCount)
+ {
+ times = new WorkTime[TestCount];
+ }
+
+
+ public IEnumerator<WorkTime> GetEnumerator() => times.AsEnumerable().GetEnumerator();
+
+ IEnumerator IEnumerable.GetEnumerator() => times.GetEnumerator();
+
+ }
+}
ToolPack1/SimpleBenchmark/WorkTime.cs 37(+37 -0)
diff --git a/ToolPack1/SimpleBenchmark/WorkTime.cs b/ToolPack1/SimpleBenchmark/WorkTime.cs
new file mode 100644
index 0000000..2efa23b
--- /dev/null
+++ b/ToolPack1/SimpleBenchmark/WorkTime.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using System.Diagnostics;
+
+namespace SimpleBenchmark
+{
+ /// <summary>
+ /// Структура для хранения результатов замера,
+ /// полученных из stopwatch
+ /// </summary>
+ public struct WorkTime
+ {
+ // — возвращает общее затраченное время;
+ public TimeSpan Elapsed { set; get; }
+ // — возвращает общее затраченное время в миллисекундах;
+ public long ElapsedMilliseconds { set; get; }
+ //— возвращает общее затраченное время в тактах таймера;
+ public long ElapsedTicks { set; get; }
+
+
+ public WorkTime(Stopwatch stopwatch)
+ {
+ Elapsed = stopwatch.Elapsed;
+ ElapsedMilliseconds = stopwatch.ElapsedMilliseconds;
+ ElapsedTicks = stopwatch.ElapsedTicks;
+ }
+
+
+ public override string ToString()
+ {
+ return Elapsed + " | " + ElapsedMilliseconds + " | " + ElapsedTicks;
+ }
+ }
+}
ToolPack1/ToolPack1.sln 7(+7 -0)
diff --git a/ToolPack1/ToolPack1.sln b/ToolPack1/ToolPack1.sln
index d85199c..3c14c96 100644
--- a/ToolPack1/ToolPack1.sln
+++ b/ToolPack1/ToolPack1.sln
@@ -13,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SingletonTool", "SingletonT
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConfigurationTool", "ConfigurationTool\ConfigurationTool.csproj", "{E8A983A0-FF7D-4E9A-9234-3F19CCB93700}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleBenchmark", "SimpleBenchmark\SimpleBenchmark.csproj", "{F862BC1F-ABC5-4C80-9210-1722DA94A04C}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -31,6 +33,10 @@ Global
{E8A983A0-FF7D-4E9A-9234-3F19CCB93700}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E8A983A0-FF7D-4E9A-9234-3F19CCB93700}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E8A983A0-FF7D-4E9A-9234-3F19CCB93700}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F862BC1F-ABC5-4C80-9210-1722DA94A04C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F862BC1F-ABC5-4C80-9210-1722DA94A04C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F862BC1F-ABC5-4C80-9210-1722DA94A04C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F862BC1F-ABC5-4C80-9210-1722DA94A04C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -39,6 +45,7 @@ Global
{2383B162-6D95-47F4-AD93-8765DBB7AD89} = {ABC5281A-6B36-4D11-AFED-3E2EF981AA49}
{E69E7D23-3595-4742-AD69-9B245CE9C7B8} = {9FC03DF2-3AFE-4A62-B380-B9CBFF6486D1}
{E8A983A0-FF7D-4E9A-9234-3F19CCB93700} = {9FC03DF2-3AFE-4A62-B380-B9CBFF6486D1}
+ {F862BC1F-ABC5-4C80-9210-1722DA94A04C} = {9FC03DF2-3AFE-4A62-B380-B9CBFF6486D1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {408C4B5A-5AF0-418D-A722-B2B253B5F831}