├── .gitattributes
├── .gitignore
├── App.xaml
├── App.xaml.cs
├── AssemblyInfo.cs
├── Base
├── BenchRun.cs
├── BenchScore.cs
├── HWMonitor.cs
├── HWSensors.cs
├── MultiRun.cs
├── ProcessorInfo.cs
├── Settings.cs
└── SystemInfo.cs
├── BenchMaestro.csproj
├── BenchMaestro.ico
├── BenchMaestro.sln
├── BenchMaestro
├── AutoUpdaterBenchMaestro1.json
└── AutoUpdaterBenchMaestroTest.json
├── Benchmarks
├── cpuminer-opt-3.19.7
│ ├── README.md
│ ├── README.txt
│ ├── RELEASE_NOTES
│ ├── cpuminer-aes-sse42.7z
│ ├── cpuminer-avx.7z
│ ├── cpuminer-avx2-sha-vaes.7z
│ ├── cpuminer-avx2-sha.7z
│ ├── cpuminer-avx2.7z
│ ├── cpuminer-avx512-sha-vaes.7z
│ ├── cpuminer-avx512.7z
│ ├── cpuminer-sse2.7z
│ ├── libcrypto-1_1-x64.dll
│ ├── libcurl-4.dll
│ ├── libgcc_s_seh-1.dll
│ ├── libstdc++-6.dll
│ ├── libwinpthread-1.dll
│ ├── verthash-help.txt
│ └── zlib1.dll
└── xmr-stak-rx-win64-1.0.5
│ ├── WinRing0x64.sys
│ └── xmr-stak-rx.7z
├── Common
├── AsusSensorInfo.cs
├── AsusWMI.cs
├── BiosACPIFunction.cs
├── BiosMemController.cs
├── DailyTraceListener.cs
├── Event.cs
├── GridViewSort.cs
├── LibreHardwareMonitor
│ ├── AdvApi32.cs
│ ├── CpuLoad.cs
│ ├── LibC.cs
│ └── NtDll.cs
├── MemoryConfig.cs
├── MemoryModule.cs
├── Screenshot.cs
└── WMI.cs
├── GlobalSuppressions.cs
├── LICENSE
├── MainWindow.xaml
├── MainWindow.xaml.cs
├── Modules
├── BenchModule0.cs
├── BenchModule1.cs
├── BenchModule2_CpuMiner.cs
└── BenchModule2_XMRStakRx.cs
├── Properties
├── Resources.Designer.cs
├── Resources.resx
├── Settings.Designer.cs
├── Settings.settings
├── SettingsCPUMINERAVX.Designer.cs
├── SettingsCPUMINERAVX.settings
├── SettingsCPUMINERAVX2.Designer.cs
├── SettingsCPUMINERAVX2.settings
├── SettingsCPUMINERAVX2SHA.Designer.cs
├── SettingsCPUMINERAVX2SHA.settings
├── SettingsCPUMINERAVX2SHAVAES.Designer.cs
├── SettingsCPUMINERAVX2SHAVAES.settings
├── SettingsCPUMINERAVX512.Designer.cs
├── SettingsCPUMINERAVX512.settings
├── SettingsCPUMINERAVX512SHAVAES.Designer.cs
├── SettingsCPUMINERAVX512SHAVAES.settings
├── SettingsCPUMINERSSE2.Designer.cs
├── SettingsCPUMINERSSE2.settings
├── SettingsCPUMINERSSE42.Designer.cs
├── SettingsCPUMINERSSE42.settings
├── SettingsXMRSTAKRX.Designer.cs
├── SettingsXMRSTAKRX.cs
└── SettingsXMRSTAKRX.settings
├── README.md
├── Resources
└── Max.bmp
├── Settings
└── Settings.txt
├── Utils
├── GPO.cs
├── ProcessAsync.cs
└── ProcessEx.cs
├── ViewModels
└── RunsViewModel.cs
├── WinIo32.dll
├── WinIo32.sys
├── WinRing0x64.dll
├── WinRing0x64.sys
├── Windows
├── CPUMINERAVX2SHAVAESWindow.xaml
├── CPUMINERAVX2SHAVAESWindow.xaml.cs
├── CPUMINERAVX2SHAWindow.xaml
├── CPUMINERAVX2SHAWindow.xaml.cs
├── CPUMINERAVX2Window.xaml
├── CPUMINERAVX2Window.xaml.cs
├── CPUMINERAVX512SHAVAESWindow.xaml
├── CPUMINERAVX512SHAVAESWindow.xaml.cs
├── CPUMINERAVX512Window.xaml
├── CPUMINERAVX512Window.xaml.cs
├── CPUMINERAVXWindow.xaml
├── CPUMINERAVXWindow.xaml.cs
├── CPUMINERSSE2Window.xaml
├── CPUMINERSSE2Window.xaml.cs
├── CPUMINERSSE42Window.xaml
├── CPUMINERSSE42Window.xaml.cs
├── PleaseWait.xaml
├── PleaseWait.xaml.cs
├── SaveWindow.xaml
├── SaveWindow.xaml.cs
├── XMRSTAKRXWindow.xaml
└── XMRSTAKRXWindow.xaml.cs
├── ZenStates-Core.deps.json
├── ZenStates-Core.dll
├── app.manifest
├── images
├── BenchMaestro.ico
├── camera.png
├── max.png
├── pleasewait.png
├── sort_down.png
└── sort_up.png
├── inpoutx64.dll
└── xmrstakrx_config.txt
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Ww][Ii][Nn]32/
27 | [Aa][Rr][Mm]/
28 | [Aa][Rr][Mm]64/
29 | bld/
30 | [Bb]in/
31 | [Oo]bj/
32 | [Oo]ut/
33 | [Ll]og/
34 | [Ll]ogs/
35 |
36 | # Visual Studio 2015/2017 cache/options directory
37 | .vs/
38 | # Uncomment if you have tasks that create the project's static files in wwwroot
39 | #wwwroot/
40 |
41 | # Visual Studio 2017 auto generated files
42 | Generated\ Files/
43 |
44 | # MSTest test Results
45 | [Tt]est[Rr]esult*/
46 | [Bb]uild[Ll]og.*
47 |
48 | # NUnit
49 | *.VisualState.xml
50 | TestResult.xml
51 | nunit-*.xml
52 |
53 | # Build Results of an ATL Project
54 | [Dd]ebugPS/
55 | [Rr]eleasePS/
56 | dlldata.c
57 |
58 | # Benchmark Results
59 | BenchmarkDotNet.Artifacts/
60 |
61 | # .NET Core
62 | project.lock.json
63 | project.fragment.lock.json
64 | artifacts/
65 |
66 | # ASP.NET Scaffolding
67 | ScaffoldingReadMe.txt
68 |
69 | # StyleCop
70 | StyleCopReport.xml
71 |
72 | # Files built by Visual Studio
73 | *_i.c
74 | *_p.c
75 | *_h.h
76 | *.ilk
77 | *.meta
78 | *.obj
79 | *.iobj
80 | *.pch
81 | *.pdb
82 | *.ipdb
83 | *.pgc
84 | *.pgd
85 | *.rsp
86 | *.sbr
87 | *.tlb
88 | *.tli
89 | *.tlh
90 | *.tmp
91 | *.tmp_proj
92 | *_wpftmp.csproj
93 | *.log
94 | *.vspscc
95 | *.vssscc
96 | .builds
97 | *.pidb
98 | *.svclog
99 | *.scc
100 |
101 | # Chutzpah Test files
102 | _Chutzpah*
103 |
104 | # Visual C++ cache files
105 | ipch/
106 | *.aps
107 | *.ncb
108 | *.opendb
109 | *.opensdf
110 | *.sdf
111 | *.cachefile
112 | *.VC.db
113 | *.VC.VC.opendb
114 |
115 | # Visual Studio profiler
116 | *.psess
117 | *.vsp
118 | *.vspx
119 | *.sap
120 |
121 | # Visual Studio Trace Files
122 | *.e2e
123 |
124 | # TFS 2012 Local Workspace
125 | $tf/
126 |
127 | # Guidance Automation Toolkit
128 | *.gpState
129 |
130 | # ReSharper is a .NET coding add-in
131 | _ReSharper*/
132 | *.[Rr]e[Ss]harper
133 | *.DotSettings.user
134 |
135 | # TeamCity is a build add-in
136 | _TeamCity*
137 |
138 | # DotCover is a Code Coverage Tool
139 | *.dotCover
140 |
141 | # AxoCover is a Code Coverage Tool
142 | .axoCover/*
143 | !.axoCover/settings.json
144 |
145 | # Coverlet is a free, cross platform Code Coverage Tool
146 | coverage*.json
147 | coverage*.xml
148 | coverage*.info
149 |
150 | # Visual Studio code coverage results
151 | *.coverage
152 | *.coveragexml
153 |
154 | # NCrunch
155 | _NCrunch_*
156 | .*crunch*.local.xml
157 | nCrunchTemp_*
158 |
159 | # MightyMoose
160 | *.mm.*
161 | AutoTest.Net/
162 |
163 | # Web workbench (sass)
164 | .sass-cache/
165 |
166 | # Installshield output folder
167 | [Ee]xpress/
168 |
169 | # DocProject is a documentation generator add-in
170 | DocProject/buildhelp/
171 | DocProject/Help/*.HxT
172 | DocProject/Help/*.HxC
173 | DocProject/Help/*.hhc
174 | DocProject/Help/*.hhk
175 | DocProject/Help/*.hhp
176 | DocProject/Help/Html2
177 | DocProject/Help/html
178 |
179 | # Click-Once directory
180 | publish/
181 |
182 | # Publish Web Output
183 | *.[Pp]ublish.xml
184 | *.azurePubxml
185 | # Note: Comment the next line if you want to checkin your web deploy settings,
186 | # but database connection strings (with potential passwords) will be unencrypted
187 | *.pubxml
188 | *.publishproj
189 |
190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
191 | # checkin your Azure Web App publish settings, but sensitive information contained
192 | # in these scripts will be unencrypted
193 | PublishScripts/
194 |
195 | # NuGet Packages
196 | *.nupkg
197 | # NuGet Symbol Packages
198 | *.snupkg
199 | # The packages folder can be ignored because of Package Restore
200 | **/[Pp]ackages/*
201 | # except build/, which is used as an MSBuild target.
202 | !**/[Pp]ackages/build/
203 | # Uncomment if necessary however generally it will be regenerated when needed
204 | #!**/[Pp]ackages/repositories.config
205 | # NuGet v3's project.json files produces more ignorable files
206 | *.nuget.props
207 | *.nuget.targets
208 |
209 | # Microsoft Azure Build Output
210 | csx/
211 | *.build.csdef
212 |
213 | # Microsoft Azure Emulator
214 | ecf/
215 | rcf/
216 |
217 | # Windows Store app package directories and files
218 | AppPackages/
219 | BundleArtifacts/
220 | Package.StoreAssociation.xml
221 | _pkginfo.txt
222 | *.appx
223 | *.appxbundle
224 | *.appxupload
225 |
226 | # Visual Studio cache files
227 | # files ending in .cache can be ignored
228 | *.[Cc]ache
229 | # but keep track of directories ending in .cache
230 | !?*.[Cc]ache/
231 |
232 | # Others
233 | ClientBin/
234 | ~$*
235 | *~
236 | *.dbmdl
237 | *.dbproj.schemaview
238 | *.jfm
239 | *.pfx
240 | *.publishsettings
241 | orleans.codegen.cs
242 |
243 | # Including strong name files can present a security risk
244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
245 | #*.snk
246 |
247 | # Since there are multiple workflows, uncomment next line to ignore bower_components
248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
249 | #bower_components/
250 |
251 | # RIA/Silverlight projects
252 | Generated_Code/
253 |
254 | # Backup & report files from converting an old project file
255 | # to a newer Visual Studio version. Backup files are not needed,
256 | # because we have git ;-)
257 | _UpgradeReport_Files/
258 | Backup*/
259 | UpgradeLog*.XML
260 | UpgradeLog*.htm
261 | ServiceFabricBackup/
262 | *.rptproj.bak
263 |
264 | # SQL Server files
265 | *.mdf
266 | *.ldf
267 | *.ndf
268 |
269 | # Business Intelligence projects
270 | *.rdl.data
271 | *.bim.layout
272 | *.bim_*.settings
273 | *.rptproj.rsuser
274 | *- [Bb]ackup.rdl
275 | *- [Bb]ackup ([0-9]).rdl
276 | *- [Bb]ackup ([0-9][0-9]).rdl
277 |
278 | # Microsoft Fakes
279 | FakesAssemblies/
280 |
281 | # GhostDoc plugin setting file
282 | *.GhostDoc.xml
283 |
284 | # Node.js Tools for Visual Studio
285 | .ntvs_analysis.dat
286 | node_modules/
287 |
288 | # Visual Studio 6 build log
289 | *.plg
290 |
291 | # Visual Studio 6 workspace options file
292 | *.opt
293 |
294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
295 | *.vbw
296 |
297 | # Visual Studio LightSwitch build output
298 | **/*.HTMLClient/GeneratedArtifacts
299 | **/*.DesktopClient/GeneratedArtifacts
300 | **/*.DesktopClient/ModelManifest.xml
301 | **/*.Server/GeneratedArtifacts
302 | **/*.Server/ModelManifest.xml
303 | _Pvt_Extensions
304 |
305 | # Paket dependency manager
306 | .paket/paket.exe
307 | paket-files/
308 |
309 | # FAKE - F# Make
310 | .fake/
311 |
312 | # CodeRush personal settings
313 | .cr/personal
314 |
315 | # Python Tools for Visual Studio (PTVS)
316 | __pycache__/
317 | *.pyc
318 |
319 | # Cake - Uncomment if you are using it
320 | # tools/**
321 | # !tools/packages.config
322 |
323 | # Tabs Studio
324 | *.tss
325 |
326 | # Telerik's JustMock configuration file
327 | *.jmconfig
328 |
329 | # BizTalk build output
330 | *.btp.cs
331 | *.btm.cs
332 | *.odx.cs
333 | *.xsd.cs
334 |
335 | # OpenCover UI analysis results
336 | OpenCover/
337 |
338 | # Azure Stream Analytics local run output
339 | ASALocalRun/
340 |
341 | # MSBuild Binary and Structured Log
342 | *.binlog
343 |
344 | # NVidia Nsight GPU debugger configuration file
345 | *.nvuser
346 |
347 | # MFractors (Xamarin productivity tool) working folder
348 | .mfractor/
349 |
350 | # Local History for Visual Studio
351 | .localhistory/
352 |
353 | # BeatPulse healthcheck temp database
354 | healthchecksdb
355 |
356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
357 | MigrationBackup/
358 |
359 | # Ionide (cross platform F# VS Code tools) working folder
360 | .ionide/
361 |
362 | # Fody - auto-generated XML schema
363 | FodyWeavers.xsd
--------------------------------------------------------------------------------
/App.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | [assembly: ThemeInfo(
4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
5 | //(used if a resource is not found in the page,
6 | // or application resource dictionaries)
7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
8 | //(used if a resource is not found in the page,
9 | // app, or any theme specific resource dictionaries)
10 | )]
11 |
--------------------------------------------------------------------------------
/Base/BenchRun.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading;
7 | using System.Threading.Tasks;
8 | using System.Windows;
9 |
10 | namespace BenchMaestro
11 | {
12 | class BenchRun
13 | {
14 |
15 | public static void SetRunProcID(int ProcId)
16 | {
17 | App.RunningProcess = ProcId;
18 | Trace.WriteLine($"Running ProcID {ProcId} -> {App.RunningProcess}");
19 | }
20 |
21 | public static bool KillProcID(int ProcId)
22 | {
23 | bool success = false;
24 |
25 | Trace.WriteLine($"KillProcID {ProcId}");
26 |
27 | Process ProcById = Process.GetProcessById(ProcId);
28 | ProcById.Kill();
29 |
30 | TimeSpan timeSpan = TimeSpan.FromSeconds(10);
31 |
32 | int elapsed = 0;
33 | while ((!success) && (elapsed < timeSpan.TotalMilliseconds))
34 | {
35 | Thread.Sleep(100);
36 | elapsed += 100;
37 | success = ProcById.HasExited;
38 | }
39 | if (!success)
40 | {
41 | ProcById.Kill();
42 | Thread.Sleep(250);
43 | success = ProcById.HasExited;
44 | }
45 | Trace.WriteLine($"Killing ProcID {ProcId} -> {success}");
46 | if (success)
47 | {
48 | App.RunningProcess = -1;
49 | }
50 |
51 | return success;
52 | }
53 |
54 | }
55 | public static class TimeSpanFormattingExtension
56 | {
57 | public static string ToReadableString(this TimeSpan span)
58 | {
59 | return string.Join(", ", span.GetReadableStringElements()
60 | .Where(str => !string.IsNullOrWhiteSpace(str)));
61 | }
62 |
63 | private static IEnumerable GetReadableStringElements(this TimeSpan span)
64 | {
65 | yield return GetDaysString((int)Math.Floor(span.TotalDays));
66 | yield return GetHoursString(span.Hours);
67 | yield return GetMinutesString(span.Minutes);
68 | yield return GetSecondsString(span.Seconds);
69 | }
70 |
71 | private static string GetDaysString(int days)
72 | {
73 | if (days == 0)
74 | return string.Empty;
75 |
76 | if (days == 1)
77 | return "1d";
78 |
79 | return string.Format("{0:0}d", days);
80 | }
81 |
82 | private static string GetHoursString(int hours)
83 | {
84 | if (hours == 0)
85 | return string.Empty;
86 |
87 | if (hours == 1)
88 | return "1h";
89 |
90 | return string.Format("{0:0}h", hours);
91 | }
92 |
93 | private static string GetMinutesString(int minutes)
94 | {
95 | if (minutes == 0)
96 | return string.Empty;
97 |
98 | if (minutes == 1)
99 | return "1m";
100 |
101 | return string.Format("{0:0}m", minutes);
102 | }
103 |
104 | private static string GetSecondsString(int seconds)
105 | {
106 | if (seconds == 0)
107 | return string.Empty;
108 |
109 | if (seconds == 1)
110 | return "1s";
111 |
112 | return string.Format("{0:0}s", seconds);
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/Base/MultiRun.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace BenchMaestro
8 | {
9 | class MultiRun
10 | {
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Base/Settings.cs:
--------------------------------------------------------------------------------
1 | namespace BenchMaestro.Properties {
2 |
3 |
4 | // This class allows you to handle specific events on the settings class:
5 | // The SettingChanging event is raised before a setting's value is changed.
6 | // The PropertyChanged event is raised after a setting's value is changed.
7 | // The SettingsLoaded event is raised after the setting values are loaded.
8 | // The SettingsSaving event is raised before the setting values are saved.
9 | internal sealed partial class Settings {
10 |
11 | public Settings() {
12 | // // To add event handlers for saving and changing settings, uncomment the lines below:
13 | //
14 | // this.SettingChanging += this.SettingChangingEventHandler;
15 | //
16 | // this.SettingsSaving += this.SettingsSavingEventHandler;
17 | //
18 | }
19 |
20 | private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
21 | // Add code to handle the SettingChangingEvent event here.
22 | }
23 |
24 | private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
25 | // Add code to handle the SettingsSaving event here.
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/BenchMaestro.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/BenchMaestro.ico
--------------------------------------------------------------------------------
/BenchMaestro.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.32126.315
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BenchMaestro", "BenchMaestro.csproj", "{0A0330D9-B359-4A04-AC16-182982D8BEF3}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {0A0330D9-B359-4A04-AC16-182982D8BEF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {0A0330D9-B359-4A04-AC16-182982D8BEF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {0A0330D9-B359-4A04-AC16-182982D8BEF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {0A0330D9-B359-4A04-AC16-182982D8BEF3}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {035DDC87-DCA3-4263-950E-6829E7FAD113}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/BenchMaestro/AutoUpdaterBenchMaestro1.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.0.34",
3 | "url": "https://github.com/mann1x/BenchMaestro/releases/download/v1.0.34/BenchMaestro-v1.0.34.zip",
4 | "changelog": "https://github.com/mann1x/BenchMaestro/releases",
5 | "mandatory": {
6 | "value": false,
7 | "minVersion": "1.0.34",
8 | "mode": 1
9 | },
10 | "checksum": {
11 | "value": "c6a84f79e8942c7c976a112b7ffe5525f0be631467b0e3e0761daebab2ecbd74",
12 | "hashingAlgorithm": "SHA256"
13 | }
14 | }
--------------------------------------------------------------------------------
/BenchMaestro/AutoUpdaterBenchMaestroTest.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "99.0.28",
3 | "url": "https://github.com/mann1x/BenchMaestro/releases/download/v1.0.28/BenchMaestro-v1.0.28.zip",
4 | "changelog": "https://github.com/mann1x/BenchMaestro/releases",
5 | "mandatory": {
6 | "value": false,
7 | "minVersion": "1.0.28",
8 | "mode": 1
9 | },
10 | "checksum": {
11 | "value": "326e04df3baf32107d2f69a215639dcb70ad18f534cb4b104dcdc19cc0535394",
12 | "hashingAlgorithm": "SHA256"
13 | }
14 | }
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/README.txt:
--------------------------------------------------------------------------------
1 | This file is included in the Windows binary package. Compile instructions
2 | for Linux and Windows can be found in RELEASE_NOTES.
3 |
4 | This package is officially avalable only from:
5 | https://github.com/JayDDee/cpuminer-opt
6 | No other sources should be trusted.
7 |
8 | cpuminer is a console program that is executed from a DOS or Powershell
9 | prompt. There is no GUI and no mouse support.
10 |
11 | Miner programs are often flagged as malware by antivirus programs. This is
12 | a false positive, they are flagged simply because they are cryptocurrency
13 | miners. The source code is open for anyone to inspect. If you don't trust
14 | the software, don't use it.
15 |
16 | Choose the exe that best matches you CPU's features or use trial and
17 | error to find the fastest one that works. Pay attention to
18 | the features listed at cpuminer startup to ensure you are mining at
19 | optimum speed using the best available features.
20 |
21 | Architecture names and compile options used are only provided for
22 | mainstream desktop CPUs. Budget CPUs like Pentium and Celeron are often
23 | missing some features. Check your CPU.
24 |
25 | Support for AMD CPUs older than Ryzen is incomplete and without specific
26 | recommendations. Find the best fit. CPUs older than Piledriver, including
27 | Athlon x2 and Phenom II x4, are not supported by cpuminer-opt due to an
28 | incompatible implementation of SSE2 on these CPUs.
29 |
30 | More information for Intel and AMD CPU architectures and their features
31 | can be found on Wikipedia.
32 |
33 | https://en.wikipedia.org/wiki/List_of_Intel_CPU_microarchitectures
34 |
35 | https://en.wikipedia.org/wiki/List_of_AMD_CPU_microarchitectures
36 |
37 | File name Architecture name
38 |
39 | cpuminer-sse2.exe Core2, Nehalem, generic x86_64 with SSE2
40 | cpuminer-aes-sse42.exe Westmere
41 | cpuminer-avx.exe Sandybridge, Ivybridge
42 | cpuminer-avx2.exe Haswell, Skylake, Kabylake, Coffeelake, Cometlake
43 | cpuminer-avx2-sha.exe AMD Zen1, Zen2
44 | cpuminer-avx2-sha-vaes.exe Intel Alderlake*, AMD Zen3
45 | cpuminer-avx512.exe Intel HEDT Skylake-X, Cascadelake
46 | cpuminer-avx512-sha-vaes.exe Icelake, Tigerlake, Rocketlake
47 |
48 | * Alderlake is a hybrid architecture. With the E-cores disabled it may be
49 | possible to enable AVX512 on the the P-cores and use the avx512-sha-vaes
50 | build. This is not officially supported by Intel at time of writing.
51 | Check for current information.
52 |
53 | Notes about included DLL files:
54 |
55 | Downloading DLL files from alternative sources presents an inherent
56 | security risk if their source is unknown. All DLL files included have
57 | been copied from the Ubuntu-20.04 installation or compiled by me from
58 | source code obtained from the author's official repository. The exact
59 | procedure is documented in the build instructions for Windows:
60 | https://github.com/JayDDee/cpuminer-opt/wiki/Compiling-from-source
61 |
62 | Some DLL filess may already be installed on the system by Windows or third
63 | party packages. They often will work and may be used instead of the included
64 | file.
65 |
66 | If you like this software feel free to donate:
67 |
68 | BTC: 12tdvfF7KmAsihBXQXynT6E6th2c2pByTT
69 |
70 |
71 |
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/cpuminer-aes-sse42.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/cpuminer-aes-sse42.7z
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/cpuminer-avx.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/cpuminer-avx.7z
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/cpuminer-avx2-sha-vaes.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/cpuminer-avx2-sha-vaes.7z
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/cpuminer-avx2-sha.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/cpuminer-avx2-sha.7z
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/cpuminer-avx2.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/cpuminer-avx2.7z
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/cpuminer-avx512-sha-vaes.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/cpuminer-avx512-sha-vaes.7z
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/cpuminer-avx512.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/cpuminer-avx512.7z
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/cpuminer-sse2.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/cpuminer-sse2.7z
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/libcrypto-1_1-x64.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/libcrypto-1_1-x64.dll
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/libcurl-4.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/libcurl-4.dll
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/libgcc_s_seh-1.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/libgcc_s_seh-1.dll
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/libstdc++-6.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/libstdc++-6.dll
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/libwinpthread-1.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/libwinpthread-1.dll
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/verthash-help.txt:
--------------------------------------------------------------------------------
1 | Quickstart:
2 | ----------
3 |
4 | First time mining verthash or don't have a Verthash data file:
5 |
6 | --algo verthash --verify --url ...
7 |
8 | Verthash data file already exists:
9 |
10 | --algo verthash --data-file /path/to/verthash.dat --url ...
11 |
12 |
13 | Background:
14 | ----------
15 |
16 | Verthash algorithm requires a data file for hashing. This file is
17 | static, portable, and only needs to be created once.
18 |
19 | A Verthash data file created by VerthashMiner can also be used by cpuminer-opt
20 | and used simultaneously by both miners.
21 |
22 | Due to its size >1GB it is recommened one data file be created and
23 | stored in a permanent location accessible to any miner that wants to use it.
24 |
25 | New command line options:
26 | ------------------------
27 |
28 | cpuminer-opt adds two new command line options for verthash. The names
29 | and some behaviour is changed from VerthashMiner.
30 |
31 | --data-file /path/to/verthash.dat
32 | default when not used is verthash.dat in current working directory.
33 |
34 | --verify
35 | verify integrity of file specified by --data-file, or if not specified
36 | the default data file if it exists, or create a default file and verify it
37 | if one does not yet exist. Data file verification is disabled by default.
38 |
39 | Detailed usage:
40 | --------------
41 |
42 | If a data file already exists it can be selected using the --data-file
43 | option to specify the path and name of the file.
44 |
45 | --algo verthash --datafile /path/to/verthash.dat --url ...
46 |
47 | If the --data-file option is not used the default is to use 'verthash.dat'
48 | from the current working directory.
49 |
50 | If no data file exists it can be created by using the --verify option
51 | without the --data-file option. If the default data file is not found in
52 | the current directory it will be created.
53 |
54 | --algo verthash --verify --url ...
55 |
56 | Data file creation can take up to 30 minutes on a spinning hard drive.
57 | Once created the new data file will be verified and used immediately
58 | if a valid url and user were included on the command line.
59 |
60 | A default data file can be created by ommitting the url option. That will
61 | either verify an existing default data file or create one and verify it,
62 | then exit.
63 |
64 | --algo verthash --verify
65 |
66 | A data file will never be created if --data-file is specified. The miner
67 | will exit with an error if the file is not found. This is to avoid accidentally
68 | creating an unwanted data file due to a typo.
69 |
70 | After creation the data file can moved to a more convenient location and
71 | referenced by --data-file, or left where it is and used by default without the
72 | --data-file option.
73 |
74 | Data file verification takes a few seconds and is disabled by default.
75 | VerthashMiner enables data file verification by default and has an option to
76 | disable it.
77 |
78 | The --verify option is intended primarily to create a new file. It's
79 | not necessary or useful to verify a file every time the miner is started.
80 |
81 |
--------------------------------------------------------------------------------
/Benchmarks/cpuminer-opt-3.19.7/zlib1.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/cpuminer-opt-3.19.7/zlib1.dll
--------------------------------------------------------------------------------
/Benchmarks/xmr-stak-rx-win64-1.0.5/WinRing0x64.sys:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/xmr-stak-rx-win64-1.0.5/WinRing0x64.sys
--------------------------------------------------------------------------------
/Benchmarks/xmr-stak-rx-win64-1.0.5/xmr-stak-rx.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Benchmarks/xmr-stak-rx-win64-1.0.5/xmr-stak-rx.7z
--------------------------------------------------------------------------------
/Common/AsusSensorInfo.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using static BenchMaestro.AsusWMI;
3 |
4 | namespace BenchMaestro
5 | {
6 | /*
7 | * Sample data for core voltage from Crosshair VI Hero
8 | *
9 | * Data_Type: 3
10 | * Location: 0
11 | * Name: CPU Core Voltage
12 | * Source: 1
13 | * Type: 0
14 | */
15 | public class AsusSensorInfo : INotifyPropertyChanged
16 | {
17 | public event PropertyChangedEventHandler PropertyChanged;
18 |
19 | protected void OnPropertyChanged(PropertyChangedEventArgs eventArgs)
20 | {
21 | PropertyChanged?.Invoke(this, eventArgs);
22 | }
23 |
24 | protected bool SetProperty(ref T storage, T value, PropertyChangedEventArgs args)
25 | {
26 | if (Equals(storage, value)) return false;
27 | storage = value;
28 | OnPropertyChanged(args);
29 | return true;
30 | }
31 |
32 | private byte index;
33 |
34 | public byte Index
35 | {
36 | get => index;
37 | set => SetProperty(ref index, value, InternalEventArgsCache.Index);
38 | }
39 |
40 | private AsusSensorDataType dataType;
41 |
42 | public AsusSensorDataType DataType
43 | {
44 | get => dataType;
45 | set => SetProperty(ref dataType, value, InternalEventArgsCache.DataType);
46 | }
47 |
48 |
49 | private AsusSensorLocation location;
50 |
51 | public AsusSensorLocation Location
52 | {
53 | get => location;
54 | set => SetProperty(ref location, value, InternalEventArgsCache.Location);
55 | }
56 |
57 | private string name;
58 |
59 | public string Name
60 | {
61 | get => name;
62 | set => SetProperty(ref name, value, InternalEventArgsCache.Name);
63 | }
64 |
65 | private AsusSensorSource source;
66 |
67 | public AsusSensorSource Source
68 | {
69 | get => source;
70 | set => SetProperty(ref source, value, InternalEventArgsCache.Source);
71 | }
72 |
73 | private AsusSensorType type;
74 |
75 | public AsusSensorType Type
76 | {
77 | get => type;
78 | set => SetProperty(ref type, value, InternalEventArgsCache.Type);
79 | }
80 |
81 | private string val;
82 |
83 | public string Value
84 | {
85 | get => val;
86 | set => SetProperty(ref val, value, InternalEventArgsCache.Value);
87 | }
88 |
89 | internal static class InternalEventArgsCache
90 | {
91 | internal static PropertyChangedEventArgs Index = new PropertyChangedEventArgs("Index");
92 | internal static PropertyChangedEventArgs DataType = new PropertyChangedEventArgs("DataType");
93 | internal static PropertyChangedEventArgs Location = new PropertyChangedEventArgs("Location");
94 | internal static PropertyChangedEventArgs Name = new PropertyChangedEventArgs("Name");
95 | internal static PropertyChangedEventArgs Source = new PropertyChangedEventArgs("Source");
96 | internal static PropertyChangedEventArgs Type = new PropertyChangedEventArgs("Type");
97 | internal static PropertyChangedEventArgs Value = new PropertyChangedEventArgs("Value");
98 | }
99 | }
100 | }
--------------------------------------------------------------------------------
/Common/AsusWMI.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Management;
4 |
5 | namespace BenchMaestro
6 | {
7 | public class AsusWMI : IDisposable
8 | {
9 | private const string scope = "root\\wmi";
10 | private const string className = "ASUSHW";
11 | private string instanceName = "";
12 | private ManagementObject instance;
13 |
14 | public List sensors = new List();
15 |
16 | // enums used from https://github.com/electrified/asus-wmi-sensors
17 | public enum AsusSensorType: uint
18 | {
19 | VOLTAGE = 0x0,
20 | TEMPERATURE_C = 0x1,
21 | FAN_RPM = 0x2,
22 | CURRENT = 0x3,
23 | WATER_FLOW = 0x4
24 | };
25 |
26 | public enum AsusSensorDataType: uint
27 | {
28 | SIGNED_INT = 0x0,
29 | UNSIGNED_INT = 0x1,
30 | BOOL = 0x2,
31 | SCALED = 0x3
32 | };
33 |
34 | public enum AsusSensorSource: uint
35 | {
36 | SIO = 0x1,
37 | EC = 0x2
38 | };
39 |
40 | public enum AsusSensorLocation: uint
41 | {
42 | CPU = 0x0,
43 | CPU_SOC = 0x1,
44 | DRAM = 0x2,
45 | MOTHERBOARD = 0x3,
46 | CHIPSET = 0x4,
47 | AUX = 0x5,
48 | VRM = 0x6,
49 | COOLER = 0x7
50 | };
51 |
52 | public bool Init()
53 | {
54 | try
55 | {
56 | WMI.Connect(scope);
57 |
58 | instanceName = WMI.GetInstanceName(scope, className);
59 | instance = new ManagementObject(scope, $"{className}.InstanceName='{instanceName}'", null);
60 |
61 | if (instanceName.Length == 0 || instance == null)
62 | throw new Exception($"No instance for WMI class {className}");
63 |
64 | uint count = GetItemCount();
65 | for (byte i = 0; i < count; i++)
66 | {
67 | AsusSensorInfo sensor = GetSensorInfo(i);
68 | sensors.Add(sensor);
69 | }
70 |
71 | sensors.Sort((a, b) => a.Type.CompareTo(b.Type));
72 |
73 | Status = 1;
74 | return true;
75 | }
76 | catch (Exception)
77 | {
78 | return false;
79 | }
80 | }
81 |
82 | private ManagementBaseObject InvokeMethod(ManagementObject mo, string methodName, string inParamName, uint arg)
83 | {
84 | try
85 | {
86 | // Obtain in-parameters for the method
87 | ManagementBaseObject inParams = mo.GetMethodParameters($"{methodName}");
88 |
89 | // Add the input parameters.
90 | if (inParams != null)
91 | inParams[$"{inParamName}"] = arg;
92 |
93 | // Execute the method and obtain the return values.
94 | ManagementBaseObject outParams = mo.InvokeMethod($"{methodName}", inParams, null);
95 |
96 | return outParams;
97 | }
98 | catch (ManagementException)
99 | {
100 | return null;
101 | }
102 | }
103 |
104 | private uint GetInvokeMethodData(ManagementObject mo = null, string methodName = "", string inParamName = null,
105 | uint arg = 0)
106 | {
107 | uint data = 0;
108 | try
109 | {
110 | ManagementBaseObject res = InvokeMethod(mo, methodName, inParamName, arg);
111 | if (res != null)
112 | data = (uint) res["Data"];
113 | }
114 | catch
115 | {
116 | // ignored
117 | }
118 |
119 | return data;
120 | }
121 |
122 | private string SensorValueToFormattedString(AsusSensorType type, uint value)
123 | {
124 | switch (type)
125 | {
126 | case AsusSensorType.VOLTAGE:
127 | return $"{value / 1000000.0f:F4}V";
128 |
129 | case AsusSensorType.TEMPERATURE_C:
130 | return $"{value}\u00b0C";
131 |
132 | case AsusSensorType.FAN_RPM:
133 | return $"{value}RPM";
134 |
135 | case AsusSensorType.CURRENT:
136 | return $"{value}A";
137 |
138 | default:
139 | return value.ToString();
140 | }
141 | }
142 |
143 | // ASUS WMI commands
144 | public uint GetVersion() => GetInvokeMethodData(instance, "sensor_get_version");
145 |
146 | public uint GetItemCount() => GetInvokeMethodData(instance, "sensor_get_number");
147 |
148 | public uint GetBufferAddress() => GetInvokeMethodData(instance, "sensor_get_buffer_address");
149 |
150 | public uint UpdateBuffer(AsusSensorSource source) =>
151 | GetInvokeMethodData(instance, "sensor_update_buffer", "Source", (uint) source);
152 |
153 | public uint GetSensorValue(byte index) => GetInvokeMethodData(instance, "sensor_get_value", "Index", index);
154 |
155 | public string GetSensorFormattedValue(AsusSensorInfo sensor)
156 | {
157 | return SensorValueToFormattedString(sensor.Type, GetSensorValue(sensor.Index));
158 | }
159 |
160 | public AsusSensorInfo GetSensorInfo(byte index)
161 | {
162 | AsusSensorInfo sensor = new AsusSensorInfo();
163 | try
164 | {
165 | ManagementBaseObject res = InvokeMethod(instance, "sensor_get_info", "Index", index);
166 | if (res != null)
167 | {
168 | sensor.Index = index;
169 | sensor.DataType = (AsusSensorDataType) res["Data_Type"];
170 | sensor.Location = (AsusSensorLocation) res["Location"];
171 | sensor.Name = (string) res["Name"];
172 | sensor.Source = (AsusSensorSource) res["Source"];
173 | sensor.Type = (AsusSensorType) res["Type"];
174 | sensor.Value = GetSensorFormattedValue(sensor);
175 | }
176 | }
177 | catch
178 | {
179 | // ignored
180 | }
181 |
182 | return sensor;
183 | }
184 |
185 | public void UpdateSensors()
186 | {
187 | UpdateBuffer(AsusSensorSource.SIO);
188 | UpdateBuffer(AsusSensorSource.EC);
189 |
190 | foreach (AsusSensorInfo sensor in sensors) sensor.Value = GetSensorFormattedValue(sensor);
191 | }
192 |
193 | public AsusSensorInfo FindSensorByName(string name) => sensors?.Find(x => x.Name == name);
194 |
195 | public uint Status { get; protected set; }
196 |
197 | private bool disposedValue;
198 |
199 | protected virtual void Dispose(bool disposing)
200 | {
201 | if (!disposedValue)
202 | {
203 | sensors = null;
204 | disposedValue = true;
205 | }
206 | }
207 |
208 | public void Dispose()
209 | {
210 | // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
211 | Dispose(true);
212 | GC.SuppressFinalize(this);
213 | }
214 | }
215 | }
--------------------------------------------------------------------------------
/Common/BiosACPIFunction.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 |
3 | namespace BenchMaestro
4 | {
5 | public class BiosACPIFunction : IEnumerable
6 | {
7 | public string IDString;
8 | public uint ID;
9 |
10 | public BiosACPIFunction(string idString, uint id)
11 | {
12 | IDString = idString;
13 | ID = id;
14 | }
15 |
16 | public IEnumerator GetEnumerator()
17 | {
18 | return ((IEnumerable) IDString).GetEnumerator();
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/Common/BiosMemController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Runtime.InteropServices;
4 |
5 | namespace BenchMaestro
6 | {
7 | ///
8 | /// From ZenTimings
9 | ///
10 | public class BiosMemController : IDisposable
11 | {
12 | private static readonly Dictionary ProcOdtDict = new Dictionary
13 | {
14 | {1, "480.0 Ω"},
15 | {2, "240.0 Ω"},
16 | {3, "160.0 Ω"},
17 | {8, "120.0 Ω"},
18 | {9, "96.0 Ω"},
19 | {10, "80.0 Ω"},
20 | {11, "68.6 Ω"},
21 | {24, "60.0 Ω"},
22 | {25, "53.3 Ω"},
23 | {26, "48.0 Ω"},
24 | {27, "43.6 Ω"},
25 | {56, "40.0 Ω"},
26 | {57, "36.9 Ω"},
27 | {58, "34.3 Ω"},
28 | {59, "32.0 Ω"},
29 | {62, "30.0 Ω"},
30 | {63, "28.2 Ω"}
31 | };
32 |
33 | private static readonly Dictionary DriveStrengthDict = new Dictionary
34 | {
35 | {0, "120.0 Ω"},
36 | {1, "60.0 Ω"},
37 | {3, "40.0 Ω"},
38 | {7, "30.0 Ω"},
39 | {15, "24.0 Ω"},
40 | {31, "20.0 Ω"}
41 | };
42 |
43 | private static readonly Dictionary RttDict = new Dictionary
44 | {
45 | {0, "Disabled"},
46 | {1, "RZQ/4"},
47 | {2, "RZQ/2"},
48 | {3, "RZQ/6"},
49 | {4, "RZQ/1"},
50 | {5, "RZQ/5"},
51 | {6, "RZQ/3"},
52 | {7, "RZQ/7"}
53 | };
54 |
55 | private static readonly Dictionary RttWrDict = new Dictionary
56 | {
57 | {0, "Off"},
58 | {1, "RZQ/2"},
59 | {2, "RZQ/1"},
60 | {3, "Hi-Z"},
61 | {4, "RZQ/3"}
62 | };
63 |
64 | private bool disposedValue;
65 |
66 | private byte[] table;
67 |
68 | public BiosMemController()
69 | {
70 | }
71 |
72 | public BiosMemController(byte[] table)
73 | {
74 | ParseTable(table);
75 | }
76 |
77 | public byte[] Table
78 | {
79 | get => table;
80 | set
81 | {
82 | if (value != null)
83 | {
84 | table = value;
85 | ParseTable(value);
86 | }
87 | }
88 | }
89 |
90 | public Resistances Config { get; set; }
91 |
92 | public void Dispose()
93 | {
94 | // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
95 | Dispose(true);
96 | GC.SuppressFinalize(this);
97 | }
98 |
99 | private void ParseTable(byte[] biosTable)
100 | {
101 | GCHandle handle = GCHandle.Alloc(biosTable, GCHandleType.Pinned);
102 | try
103 | {
104 | Config = (Resistances) Marshal.PtrToStructure(handle.AddrOfPinnedObject(),
105 | typeof(Resistances));
106 | }
107 | finally
108 | {
109 | handle.Free();
110 | }
111 | }
112 |
113 | private static string GetByKey(Dictionary dict, int key)
114 | {
115 | if (!dict.TryGetValue(key, out string output)) return "N/A";
116 | return output;
117 | }
118 |
119 | public string GetProcODTString(int key) => GetByKey(ProcOdtDict, key);
120 | public string GetDrvStrenString(int key) => GetByKey(DriveStrengthDict, key);
121 | public string GetRttString(int key) => GetByKey(RttDict, key);
122 | public string GetRttWrString(int key) => GetByKey(RttWrDict, key);
123 | public string GetSetupString(byte value) => $"{value / 32}/{value % 32}";
124 |
125 | protected virtual void Dispose(bool disposing)
126 | {
127 | if (!disposedValue)
128 | {
129 | Table = null;
130 | disposedValue = true;
131 | }
132 | }
133 |
134 | [Serializable]
135 | [StructLayout(LayoutKind.Explicit)]
136 | public struct Resistances
137 | {
138 | [FieldOffset(27)] public ushort MemVddio;
139 | [FieldOffset(29)] public ushort MemVtt;
140 | [FieldOffset(33)] public byte ProcODT;
141 | [FieldOffset(65)] public byte RttNom;
142 | [FieldOffset(66)] public byte RttWr;
143 | [FieldOffset(67)] public byte RttPark;
144 | [FieldOffset(86)] public byte AddrCmdSetup;
145 | [FieldOffset(87)] public byte CsOdtSetup;
146 | [FieldOffset(88)] public byte CkeSetup;
147 | [FieldOffset(89)] public byte ClkDrvStren;
148 | [FieldOffset(90)] public byte AddrCmdDrvStren;
149 | [FieldOffset(91)] public byte CsOdtCmdDrvStren;
150 | [FieldOffset(92)] public byte CkeDrvStren;
151 | };
152 | }
153 | }
--------------------------------------------------------------------------------
/Common/DailyTraceListener.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 | using System.IO;
4 | using System.Diagnostics;
5 | using System.Threading;
6 |
7 | namespace BenchMaestro
8 | {
9 | public class DailyTraceListener : TraceListener
10 | {
11 | Thread thread = Thread.CurrentThread;
12 | private string _LogFileLocation = "";
13 | private DateTime _CurrentDate;
14 | StreamWriter _TraceWriter;
15 |
16 | public DailyTraceListener(string FileName)
17 | {
18 | _LogFileLocation = FileName;
19 | _TraceWriter = new StreamWriter(GenerateFileName(), false);
20 | }
21 |
22 | public override void Write(string message)
23 | {
24 | CheckRollover();
25 | _TraceWriter.Write(message);
26 | }
27 |
28 | public override void Write(string message, string category)
29 | {
30 | CheckRollover();
31 | _TraceWriter.Write(category + " " + message);
32 | }
33 |
34 |
35 | public override void WriteLine(string message)
36 | {
37 | CheckRollover();
38 | StringBuilder sb = new StringBuilder();
39 | sb.Append(DateTime.Now);
40 | sb.Append("##");
41 | sb.Append($"{Process.GetCurrentProcess().Id}:{thread.ManagedThreadId}");
42 | sb.Append("## ");
43 | sb.Append(message);
44 | _TraceWriter.WriteLine(sb.ToString());
45 | }
46 |
47 | public override void WriteLine(string message, string category)
48 | {
49 | CheckRollover();
50 | StringBuilder sb = new StringBuilder();
51 | sb.Append(DateTime.Now);
52 | sb.Append("##");
53 | sb.Append($"{Process.GetCurrentProcess().Id}:{thread.ManagedThreadId}");
54 | sb.Append("##");
55 | sb.Append(category);
56 | sb.Append("## ");
57 | sb.Append(message);
58 | _TraceWriter.WriteLine(sb.ToString());
59 | }
60 |
61 | private string GenerateFileName()
62 | {
63 | _CurrentDate = DateTime.Today;
64 | return Path.Combine(Path.GetDirectoryName(_LogFileLocation), Path.GetFileNameWithoutExtension(_LogFileLocation) + "_" + _CurrentDate.ToString("yyyyMMdd") + Path.GetExtension(_LogFileLocation));
65 | }
66 |
67 | private void CheckRollover()
68 | {
69 | if (_CurrentDate.CompareTo(DateTime.Today) != 0)
70 | {
71 | _TraceWriter.Close();
72 | _TraceWriter = new StreamWriter(GenerateFileName(), true);
73 | }
74 | }
75 |
76 | public override void Flush()
77 | {
78 | lock (this)
79 | {
80 | if (_TraceWriter != null)
81 | {
82 | _TraceWriter.Flush();
83 | }
84 | }
85 | }
86 |
87 | protected override void Dispose(bool disposing)
88 | {
89 | if (disposing)
90 | {
91 | _TraceWriter.Close();
92 | }
93 | }
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/Common/Event.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using System.ComponentModel;
8 | using System.Xml.Serialization;
9 |
10 | namespace BenchMaestro
11 | {
12 | public class Event
13 |
14 | {
15 | public long recordId { get; set; }
16 | public int severity { get; set; }
17 | public string severityDesc { get; set; }
18 | public long eventId { get; set; }
19 | public DateTime timestamp { get; set; }
20 | public string gettimestamp
21 | {
22 | get => timestamp.ToString("dd/MM/yyyy H:mm");
23 | }
24 | public string reportedBy { get; set; }
25 | public string source { get; set; }
26 | public string type { get; set; }
27 | public string processor { get; set; }
28 | public string message { get; set; }
29 | public string errorSource { get; set; }
30 | public string apicId { get; set; }
31 | public string mcaBank { get; set; }
32 | public string mciStat { get; set; }
33 | public string mciAddr { get; set; }
34 | public string mciMisc { get; set; }
35 | public string errorType { get; set; }
36 | public string transactionType { get; set; }
37 | public string participation { get; set; }
38 | public string requestType { get; set; }
39 | public string memorIO { get; set; }
40 | public string memHierarchyLvl { get; set; }
41 | public string timeout { get; set; }
42 | public string operationType { get; set; }
43 | public string length { get; set; }
44 | public string rawData { get; set; }
45 |
46 |
47 |
48 | }
49 | [XmlRoot(ElementName = "Event")]
50 | public class XmlArray
51 | {
52 | [XmlArray("EventData")]
53 | [XmlArrayItem("Data",(typeof(XmlData)))]
54 | //[XmlArrayItem(typeof(XmlComplexData))]
55 | public XmlData[] EventData;
56 | }
57 |
58 | public class XmlData
59 | {
60 | [XmlAttribute("Name")]
61 | public string Name { get; set; }
62 |
63 | [XmlText]
64 | public string Value { get; set; }
65 | }
66 |
67 | /*
68 | public class XmlComplexData
69 | {
70 | [XmlAttribute]
71 | public string Name { get; set; }
72 |
73 | [XmlText(DataType = "hexBinary")]
74 | public byte[] Encoded { get; set; }
75 | }
76 | */
77 | }
78 |
--------------------------------------------------------------------------------
/Common/LibreHardwareMonitor/AdvApi32.cs:
--------------------------------------------------------------------------------
1 | // This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
2 | // If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
3 | // Copyright (C) LibreHardwareMonitor and Contributors.
4 | // All Rights Reserved.
5 |
6 | using System;
7 | using System.Runtime.InteropServices;
8 |
9 | // ReSharper disable InconsistentNaming
10 |
11 | namespace LibreHardwareMonitor.Interop
12 | {
13 | internal class AdvApi32
14 | {
15 | private const string DllName = "advapi32.dll";
16 |
17 | [DllImport(DllName, CallingConvention = CallingConvention.Winapi)]
18 | internal static extern IntPtr OpenSCManager(string lpMachineName, string lpDatabaseName, SC_MANAGER_ACCESS_MASK dwDesiredAccess);
19 |
20 | [DllImport(DllName, CallingConvention = CallingConvention.Winapi)]
21 | [return: MarshalAs(UnmanagedType.Bool)]
22 | internal static extern bool CloseServiceHandle(IntPtr hSCObject);
23 |
24 | [DllImport(DllName, CallingConvention = CallingConvention.Winapi, SetLastError = true)]
25 | internal static extern IntPtr CreateService
26 | (
27 | IntPtr hSCManager,
28 | string lpServiceName,
29 | string lpDisplayName,
30 | SERVICE_ACCESS_MASK dwDesiredAccess,
31 | SERVICE_TYPE dwServiceType,
32 | SERVICE_START dwStartType,
33 | SERVICE_ERROR dwErrorControl,
34 | string lpBinaryPathName,
35 | string lpLoadOrderGroup,
36 | string lpdwTagId,
37 | string lpDependencies,
38 | string lpServiceStartName,
39 | string lpPassword);
40 |
41 | [DllImport(DllName, CallingConvention = CallingConvention.Winapi, SetLastError = true)]
42 | internal static extern IntPtr OpenService(IntPtr hSCManager, string lpServiceName, SERVICE_ACCESS_MASK dwDesiredAccess);
43 |
44 | [DllImport(DllName, CallingConvention = CallingConvention.Winapi, SetLastError = true)]
45 | [return: MarshalAs(UnmanagedType.Bool)]
46 | internal static extern bool DeleteService(IntPtr hService);
47 |
48 | [DllImport(DllName, CallingConvention = CallingConvention.Winapi, SetLastError = true)]
49 | [return: MarshalAs(UnmanagedType.Bool)]
50 | internal static extern bool StartService(IntPtr hService, uint dwNumServiceArgs, string[] lpServiceArgVectors);
51 |
52 | [DllImport(DllName, CallingConvention = CallingConvention.Winapi, SetLastError = true)]
53 | [return: MarshalAs(UnmanagedType.Bool)]
54 | internal static extern bool ControlService(IntPtr hService, SERVICE_CONTROL dwControl, ref SERVICE_STATUS lpServiceStatus);
55 |
56 | [Flags]
57 | internal enum SC_MANAGER_ACCESS_MASK : uint
58 | {
59 | SC_MANAGER_CONNECT = 0x00001,
60 | SC_MANAGER_CREATE_SERVICE = 0x00002,
61 | SC_MANAGER_ENUMERATE_SERVICE = 0x00004,
62 | SC_MANAGER_LOCK = 0x00008,
63 | SC_MANAGER_QUERY_LOCK_STATUS = 0x00010,
64 | SC_MANAGER_MODIFY_BOOT_CONFIG = 0x00020,
65 | SC_MANAGER_ALL_ACCESS = 0xF003F
66 | }
67 |
68 | internal enum SERVICE_ACCESS_MASK : uint
69 | {
70 | SERVICE_QUERY_CONFIG = 0x00001,
71 | SERVICE_CHANGE_CONFIG = 0x00002,
72 | SERVICE_QUERY_STATUS = 0x00004,
73 | SERVICE_ENUMERATE_DEPENDENTS = 0x00008,
74 | SERVICE_START = 0x00010,
75 | SERVICE_STOP = 0x00020,
76 | SERVICE_PAUSE_CONTINUE = 0x00040,
77 | SERVICE_INTERROGATE = 0x00080,
78 | SERVICE_USER_DEFINED_CONTROL = 0x00100,
79 | SERVICE_ALL_ACCESS = 0xF01FF
80 | }
81 |
82 | internal enum SERVICE_TYPE : uint
83 | {
84 | SERVICE_DRIVER = 0x0000000B,
85 | SERVICE_WIN32 = 0x00000030,
86 | SERVICE_ADAPTER = 0x00000004,
87 | SERVICE_FILE_SYSTEM_DRIVER = 0x00000002,
88 | SERVICE_KERNEL_DRIVER = 0x00000001,
89 | SERVICE_RECOGNIZER_DRIVER = 0x00000008,
90 | SERVICE_WIN32_OWN_PROCESS = 0x00000010,
91 | SERVICE_WIN32_SHARE_PROCESS = 0x00000020,
92 | SERVICE_USER_OWN_PROCESS = 0x00000050,
93 | SERVICE_USER_SHARE_PROCESS = 0x00000060,
94 | SERVICE_INTERACTIVE_PROCESS = 0x00000100
95 | }
96 |
97 | internal enum SERVICE_START : uint
98 | {
99 | SERVICE_BOOT_START = 0,
100 | SERVICE_SYSTEM_START = 1,
101 | SERVICE_AUTO_START = 2,
102 | SERVICE_DEMAND_START = 3,
103 | SERVICE_DISABLED = 4
104 | }
105 |
106 | internal enum SERVICE_ERROR : uint
107 | {
108 | SERVICE_ERROR_IGNORE = 0,
109 | SERVICE_ERROR_NORMAL = 1,
110 | SERVICE_ERROR_SEVERE = 2,
111 | SERVICE_ERROR_CRITICAL = 3
112 | }
113 |
114 | internal enum SERVICE_CONTROL : uint
115 | {
116 | SERVICE_CONTROL_STOP = 1,
117 | SERVICE_CONTROL_PAUSE = 2,
118 | SERVICE_CONTROL_CONTINUE = 3,
119 | SERVICE_CONTROL_INTERROGATE = 4,
120 | SERVICE_CONTROL_SHUTDOWN = 5,
121 | SERVICE_CONTROL_PARAMCHANGE = 6,
122 | SERVICE_CONTROL_NETBINDADD = 7,
123 | SERVICE_CONTROL_NETBINDREMOVE = 8,
124 | SERVICE_CONTROL_NETBINDENABLE = 9,
125 | SERVICE_CONTROL_NETBINDDISABLE = 10,
126 | SERVICE_CONTROL_DEVICEEVENT = 11,
127 | SERVICE_CONTROL_HARDWAREPROFILECHANGE = 12,
128 | SERVICE_CONTROL_POWEREVENT = 13,
129 | SERVICE_CONTROL_SESSIONCHANGE = 14
130 | }
131 |
132 | [StructLayout(LayoutKind.Sequential, Pack = 1)]
133 | internal struct SERVICE_STATUS
134 | {
135 | public uint dwServiceType;
136 | public uint dwCurrentState;
137 | public uint dwControlsAccepted;
138 | public uint dwWin32ExitCode;
139 | public uint dwServiceSpecificExitCode;
140 | public uint dwCheckPoint;
141 | public uint dwWaitHint;
142 | }
143 | }
144 | }
145 |
--------------------------------------------------------------------------------
/Common/LibreHardwareMonitor/CpuLoad.cs:
--------------------------------------------------------------------------------
1 | // This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
2 | // If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
3 | // Copyright (C) LibreHardwareMonitor and Contributors.
4 | // Partial Copyright (C) Michael Möller and Contributors.
5 | // All Rights Reserved.
6 |
7 | using System;
8 | using System.Diagnostics;
9 | using System.Runtime.InteropServices;
10 |
11 | namespace BenchMaestro
12 | {
13 | public class CpuLoad
14 | {
15 | private readonly float[] _cpuLoads;
16 | private readonly int _cpuCount;
17 | private long[] _idleTimes;
18 | private float _totalLoad;
19 | private long[] _totalTimes;
20 |
21 | public CpuLoad(int cpuCount)
22 | {
23 | _cpuCount = cpuCount;
24 | _cpuLoads = new float[_cpuCount];
25 | _totalLoad = 0;
26 | try
27 | {
28 | GetTimes(out _idleTimes, out _totalTimes);
29 | }
30 | catch (Exception)
31 | {
32 | _idleTimes = null;
33 | _totalTimes = null;
34 | }
35 |
36 | if (_idleTimes != null)
37 | IsAvailable = true;
38 | }
39 |
40 | public bool IsAvailable { get; }
41 |
42 | private static bool GetTimes(out long[] idle, out long[] total)
43 | {
44 | Interop.NtDll.SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION[] information = new Interop.NtDll.SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION[64];
45 | int size = Marshal.SizeOf(typeof(Interop.NtDll.SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION));
46 |
47 | idle = null;
48 | total = null;
49 |
50 | if (Interop.NtDll.NtQuerySystemInformation(Interop.NtDll.SYSTEM_INFORMATION_CLASS.SystemProcessorPerformanceInformation,
51 | information,
52 | information.Length * size,
53 | out IntPtr returnLength) != 0)
54 | {
55 | return false;
56 | }
57 |
58 | idle = new long[(int)returnLength / size];
59 | total = new long[(int)returnLength / size];
60 |
61 | for (int i = 0; i < idle.Length; i++)
62 | {
63 | idle[i] = information[i].IdleTime;
64 | total[i] = information[i].KernelTime + information[i].UserTime;
65 | }
66 |
67 | return true;
68 | }
69 |
70 | public float GetTotalLoad()
71 | {
72 | return _totalLoad;
73 | }
74 |
75 | public float GetCpuLoad(int cpu)
76 | {
77 | return _cpuLoads[cpu];
78 | }
79 | public float GetCpuCount()
80 | {
81 | return _cpuLoads.Length;
82 | }
83 |
84 | public void Update()
85 | {
86 | if (_idleTimes == null)
87 | return;
88 |
89 | if (!GetTimes(out long[] newIdleTimes, out long[] newTotalTimes))
90 | return;
91 |
92 |
93 | for (int i = 0; i < Math.Min(newTotalTimes.Length, _totalTimes.Length); i++)
94 | {
95 | if (newTotalTimes[i] - _totalTimes[i] < 100000)
96 | return;
97 | }
98 |
99 | if (newIdleTimes == null)
100 | return;
101 |
102 |
103 | float total = 0;
104 | int count = 0;
105 | for (int index = 0; index < _cpuCount; index++)
106 | {
107 | float value = 0;
108 | if (index < newIdleTimes.Length && index < _totalTimes.Length)
109 | {
110 | float idle = (newIdleTimes[index] - _idleTimes[index]) / (float)(newTotalTimes[index] - _totalTimes[index]);
111 | value += idle;
112 | total += idle;
113 | count++;
114 | }
115 |
116 | value = 1.0f - value;
117 | value = value < 0 ? 0 : value;
118 | _cpuLoads[index] = value * 100;
119 | //Trace.Write($"#{index} {_cpuLoads[index]}%\t");
120 | }
121 | //Trace.Write("\n");
122 |
123 | if (count > 0)
124 | {
125 | total = 1.0f - total / count;
126 | total = total < 0 ? 0 : total;
127 | }
128 | else
129 | {
130 | total = 0;
131 | }
132 |
133 | _totalLoad = total * 100;
134 | _totalTimes = newTotalTimes;
135 | _idleTimes = newIdleTimes;
136 | }
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/Common/LibreHardwareMonitor/LibC.cs:
--------------------------------------------------------------------------------
1 | // This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
2 | // If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
3 | // Copyright (C) LibreHardwareMonitor and Contributors.
4 | // All Rights Reserved.
5 |
6 | using System;
7 | using System.Runtime.InteropServices;
8 |
9 | // ReSharper disable InconsistentNaming
10 |
11 | namespace BenchMaestro.Interop
12 | {
13 | internal class LibC
14 | {
15 | private const string DllName = "libc";
16 |
17 | [DllImport(DllName)]
18 | internal static extern int sched_getaffinity(int pid, IntPtr maskSize, ref ulong mask);
19 |
20 | [DllImport(DllName)]
21 | internal static extern int sched_setaffinity(int pid, IntPtr maskSize, ref ulong mask);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Common/LibreHardwareMonitor/NtDll.cs:
--------------------------------------------------------------------------------
1 | // This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
2 | // If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
3 | // Copyright (C) LibreHardwareMonitor and Contributors.
4 | // All Rights Reserved.
5 |
6 | using System;
7 | using System.Runtime.InteropServices;
8 |
9 | // ReSharper disable InconsistentNaming
10 |
11 | namespace BenchMaestro.Interop
12 | {
13 | public class NtDll
14 | {
15 | public const string DllName = "ntdll";
16 |
17 | [StructLayout(LayoutKind.Sequential)]
18 | public struct SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
19 | {
20 | public long IdleTime;
21 | public long KernelTime;
22 | public long UserTime;
23 | public long Reserved0;
24 | public long Reserved1;
25 | public ulong Reserved2;
26 | }
27 |
28 | public enum SYSTEM_INFORMATION_CLASS
29 | {
30 | SystemBasicInformation,
31 | SystemProcessorInformation,
32 | SystemPerformanceInformation,
33 | SystemTimeOfDayInformation,
34 | SystemPathInformation,
35 | SystemProcessInformation,
36 | SystemCallCountInformation,
37 | SystemDeviceInformation,
38 | SystemProcessorPerformanceInformation,
39 | SystemFlagsInformation,
40 | SystemCallTimeInformation,
41 | SystemModuleInformation,
42 | SystemLocksInformation,
43 | SystemStackTraceInformation,
44 | SystemPagedPoolInformation,
45 | SystemNonPagedPoolInformation,
46 | SystemHandleInformation,
47 | SystemObjectInformation,
48 | SystemPageFileInformation,
49 | SystemVdmInstemulInformation,
50 | SystemVdmBopInformation,
51 | SystemFileCacheInformation,
52 | SystemPoolTagInformation,
53 | SystemInterruptInformation,
54 | SystemDpcBehaviorInformation,
55 | SystemFullMemoryInformation,
56 | SystemLoadGdiDriverInformation,
57 | SystemUnloadGdiDriverInformation,
58 | SystemTimeAdjustmentInformation,
59 | SystemSummaryMemoryInformation,
60 | SystemNextEventIdInformation,
61 | SystemEventIdsInformation,
62 | SystemCrashDumpInformation,
63 | SystemExceptionInformation,
64 | SystemCrashDumpStateInformation,
65 | SystemKernelDebuggerInformation,
66 | SystemContextSwitchInformation,
67 | SystemRegistryQuotaInformation,
68 | SystemExtendServiceTableInformation,
69 | SystemPrioritySeperation,
70 | SystemPlugPlayBusInformation,
71 | SystemDockInformation,
72 | SystemPowerInformation,
73 | SystemProcessorSpeedInformation,
74 | SystemCurrentTimeZoneInformation,
75 | SystemLookasideInformation
76 | }
77 |
78 | [DllImport(DllName)]
79 | public static extern int NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS SystemInformationClass, [Out] SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION[] SystemInformation, int SystemInformationLength, out IntPtr ReturnLength);
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/Common/MemoryModule.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 |
3 | namespace BenchMaestro
4 | {
5 | ///
6 | /// From ZenTimings
7 | ///
8 | public class MemoryModule : IEnumerable
9 | {
10 | public string BankLabel { get; set; }
11 | public string PartNumber { get; set; }
12 | public string Manufacturer { get; set; }
13 | public string DeviceLocator { get; set; }
14 | public ulong Capacity { get; set; }
15 | public uint ClockSpeed { get; set; }
16 | public bool DualRank { get; set; } = false;
17 | public string Slot { get; set; } = "";
18 | public uint DctOffset { get; set; } = 0;
19 |
20 | public MemoryModule(string partNumber, string bankLabel, string manufacturer,
21 | string deviceLocator, ulong capacity, uint clockSpeed)
22 | {
23 | PartNumber = partNumber;
24 | Capacity = capacity;
25 | ClockSpeed = clockSpeed;
26 | BankLabel = bankLabel;
27 | Manufacturer = manufacturer;
28 | DeviceLocator = deviceLocator;
29 | }
30 |
31 | public IEnumerator GetEnumerator()
32 | {
33 | return ((IEnumerable) PartNumber).GetEnumerator();
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/Common/WMI.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Management;
4 | using System.ServiceProcess;
5 | using static System.Management.ManagementObjectCollection;
6 |
7 | namespace BenchMaestro
8 | {
9 | ///
10 | /// From ZenTimings
11 | ///
12 | public static class WMI
13 | {
14 | public static object TryGetProperty(ManagementObject wmiObj, string propertyName)
15 | {
16 | object retval = null;
17 | try
18 | {
19 | retval = wmiObj.GetPropertyValue(propertyName);
20 | }
21 | catch (ManagementException ex)
22 | {
23 | Console.WriteLine(ex.Message);
24 | }
25 |
26 | return retval;
27 | }
28 |
29 | //root\wmi
30 | public static ManagementScope Connect(string scope)
31 | {
32 | try
33 | {
34 | var sc = new ServiceController("Winmgmt");
35 | if (sc.Status != ServiceControllerStatus.Running)
36 | throw new ManagementException(@"Windows Management Instrumentation service is not running");
37 |
38 | ManagementScope mScope = new ManagementScope($@"{scope}");
39 | mScope.Connect();
40 |
41 | if (mScope.IsConnected)
42 | return mScope;
43 | else
44 | throw new ManagementException($@"Failed to connect to {scope}");
45 | }
46 | catch (ManagementException ex)
47 | {
48 | Console.WriteLine(@"WMI: {0}", ex.Message);
49 | throw;
50 | }
51 | }
52 |
53 | public static ManagementObject Query(string scope, string wmiClass)
54 | {
55 | try
56 | {
57 | using (var searcher = new ManagementObjectSearcher($"{scope}", $"SELECT * FROM {wmiClass}"))
58 | {
59 | ManagementObjectEnumerator enumerator = searcher.Get().GetEnumerator();
60 | if (enumerator.MoveNext())
61 | return enumerator.Current as ManagementObject;
62 | }
63 | }
64 | catch (Exception ex)
65 | {
66 | Console.WriteLine(ex.Message);
67 | }
68 |
69 | return null;
70 | }
71 |
72 | public static List GetWmiNamespaces(string root)
73 | {
74 | List namespaces = new List();
75 | try
76 | {
77 | ManagementClass nsClass =
78 | new ManagementClass(new ManagementScope(root), new ManagementPath("__namespace"), null);
79 | foreach (var obj in nsClass.GetInstances())
80 | {
81 | var ns = (ManagementObject) obj;
82 | string namespaceName = root + "\\" + ns["Name"];
83 | namespaces.Add(namespaceName);
84 | namespaces.AddRange(GetWmiNamespaces(namespaceName));
85 | }
86 |
87 | namespaces.Sort(StringComparer.OrdinalIgnoreCase);
88 | }
89 | catch (Exception ex)
90 | {
91 | Console.WriteLine(ex.Message);
92 | }
93 |
94 | return namespaces;
95 | }
96 |
97 | public static List GetClassNamesWithinWmiNamespace(string wmiNamespaceName)
98 | {
99 | List classNames = new List();
100 | try
101 | {
102 | ManagementObjectSearcher searcher = new ManagementObjectSearcher
103 | (new ManagementScope(wmiNamespaceName),
104 | new WqlObjectQuery("SELECT * FROM meta_class"));
105 | ManagementObjectCollection objectCollection = searcher.Get();
106 | foreach (var obj in objectCollection)
107 | {
108 | var wmiClass = (ManagementClass) obj;
109 | string stringified = wmiClass.ToString();
110 | string[] parts = stringified.Split(':');
111 | classNames.Add(parts[1]);
112 | }
113 |
114 | classNames.Sort(StringComparer.OrdinalIgnoreCase);
115 | }
116 | catch (Exception ex)
117 | {
118 | Console.WriteLine(ex.Message);
119 | }
120 |
121 | return classNames;
122 | }
123 |
124 | public static string GetInstanceName(string scope, string wmiClass)
125 | {
126 | using (ManagementObject queryObject = Query(scope, wmiClass))
127 | {
128 | string name = "";
129 |
130 | if (queryObject == null)
131 | return name;
132 |
133 | try
134 | {
135 | var obj = TryGetProperty(queryObject, "InstanceName");
136 | if (obj != null) name = obj.ToString();
137 | }
138 | catch
139 | {
140 | // ignored
141 | }
142 |
143 | return name;
144 | }
145 | }
146 |
147 | public static ManagementBaseObject InvokeMethod(ManagementObject mo, string methodName, string propName,
148 | string inParamName, uint arg)
149 | {
150 | try
151 | {
152 | // Obtain in-parameters for the method
153 | ManagementBaseObject inParams = mo.GetMethodParameters($"{methodName}");
154 |
155 | // Add the input parameters.
156 | if (inParams != null)
157 | inParams[$"{inParamName}"] = arg;
158 |
159 | // Execute the method and obtain the return values.
160 | ManagementBaseObject outParams = mo.InvokeMethod($"{methodName}", inParams, null);
161 |
162 | return (ManagementBaseObject) outParams?.Properties[$"{propName}"].Value;
163 | }
164 | catch (Exception ex)
165 | {
166 | Console.WriteLine(ex.Message);
167 | return null;
168 | }
169 | }
170 |
171 | public static byte[] RunCommand(ManagementObject mo, uint commandID, uint commandArgs = 0x0)
172 | {
173 | try
174 | {
175 | // Obtain in-parameters for the method
176 | ManagementBaseObject inParams = mo.GetMethodParameters("RunCommand");
177 |
178 | // Add the input parameters.
179 | byte[] buffer = new byte[8];
180 |
181 | var cmd = BitConverter.GetBytes(commandID);
182 | var args = BitConverter.GetBytes(commandArgs);
183 |
184 | Buffer.BlockCopy(cmd, 0, buffer, 0, cmd.Length);
185 | Buffer.BlockCopy(args, 0, buffer, cmd.Length, args.Length);
186 |
187 | inParams["Inbuf"] = buffer;
188 |
189 | // Execute the method and obtain the return values.
190 | ManagementBaseObject outParams = mo.InvokeMethod("RunCommand", inParams, null);
191 |
192 | // return outParam
193 | ManagementBaseObject pack = (ManagementBaseObject) outParams?.Properties["Outbuf"].Value;
194 | return (byte[]) pack?.GetPropertyValue("Result");
195 | }
196 | catch (ManagementException ex)
197 | {
198 | Console.WriteLine(ex.Message);
199 | return null;
200 | }
201 | }
202 | }
203 | }
--------------------------------------------------------------------------------
/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
1 | // This file is used by Code Analysis to maintain SuppressMessage
2 | // attributes that are applied to this project.
3 | // Project-level suppressions either have no target or are given
4 | // a specific target and scoped to a namespace, type, member, etc.
5 |
6 | using System.Diagnostics.CodeAnalysis;
7 |
8 | [assembly: SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "", Scope = "member", Target = "~M:BenchMaestro.SystemInfo.#ctor")]
9 | [assembly: SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "", Scope = "member", Target = "~M:BenchMaestro.App.OnStartup(System.Windows.StartupEventArgs)")]
10 | [assembly: SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "", Scope = "member", Target = "~M:BenchMaestro.App.AutoUpdaterOnParseUpdateInfoEvent(AutoUpdaterDotNET.ParseUpdateInfoEventArgs)")]
11 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/LICENSE
--------------------------------------------------------------------------------
/Modules/BenchModule0.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using System.Windows.Controls;
8 | using System.Windows.Threading;
9 |
10 | namespace BenchMaestro
11 | {
12 | class BenchModule0
13 | {
14 |
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BenchMaestro.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BenchMaestro.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized string similar to ../images/camera.png.
65 | ///
66 | internal static string Camera {
67 | get {
68 | return ResourceManager.GetString("Camera", resourceCulture);
69 | }
70 | }
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | ../images/camera.png
122 |
123 |
--------------------------------------------------------------------------------
/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 0
7 |
8 |
9 | 0
10 |
11 |
12 | 600
13 |
14 |
15 | 1000
16 |
17 |
18 | False
19 |
20 |
21 | False
22 |
23 |
24 | Default
25 |
26 |
27 | 180
28 |
29 |
30 | 10
31 |
32 |
33 | 45
34 |
35 |
36 | 30
37 |
38 |
39 | 8
40 |
41 |
42 | True
43 |
44 |
45 |
46 |
47 |
48 | False
49 |
50 |
51 |
52 |
53 |
54 | 80
55 |
56 |
57 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERAVX.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BenchMaestro.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
16 | internal sealed partial class SettingsCPUMINERAVX : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static SettingsCPUMINERAVX defaultInstance = ((SettingsCPUMINERAVX)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SettingsCPUMINERAVX())));
19 |
20 | public static SettingsCPUMINERAVX Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
29 | public double Top {
30 | get {
31 | return ((double)(this["Top"]));
32 | }
33 | set {
34 | this["Top"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
41 | public double Left {
42 | get {
43 | return ((double)(this["Left"]));
44 | }
45 | set {
46 | this["Left"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
53 | public double Height {
54 | get {
55 | return ((double)(this["Height"]));
56 | }
57 | set {
58 | this["Height"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
65 | public double Width {
66 | get {
67 | return ((double)(this["Width"]));
68 | }
69 | set {
70 | this["Width"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
77 | public bool Maximized {
78 | get {
79 | return ((bool)(this["Maximized"]));
80 | }
81 | set {
82 | this["Maximized"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.UserScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
89 | public bool Initialized {
90 | get {
91 | return ((bool)(this["Initialized"]));
92 | }
93 | set {
94 | this["Initialized"] = value;
95 | }
96 | }
97 |
98 | [global::System.Configuration.UserScopedSettingAttribute()]
99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
100 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
101 | public double scoreMinWidth
102 | {
103 | get
104 | {
105 | return ((double)(this["scoreMinWidth"]));
106 | }
107 | set
108 | {
109 | this["scoreMinWidth"] = value;
110 | }
111 | }
112 |
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERAVX.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 0
7 |
8 |
9 | 0
10 |
11 |
12 | 0
13 |
14 |
15 | 0
16 |
17 |
18 | False
19 |
20 |
21 | False
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERAVX2.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BenchMaestro.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
16 | internal sealed partial class SettingsCPUMINERAVX2 : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static SettingsCPUMINERAVX2 defaultInstance = ((SettingsCPUMINERAVX2)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SettingsCPUMINERAVX2())));
19 |
20 | public static SettingsCPUMINERAVX2 Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
29 | public double Top {
30 | get {
31 | return ((double)(this["Top"]));
32 | }
33 | set {
34 | this["Top"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
41 | public double Left {
42 | get {
43 | return ((double)(this["Left"]));
44 | }
45 | set {
46 | this["Left"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
53 | public double Height {
54 | get {
55 | return ((double)(this["Height"]));
56 | }
57 | set {
58 | this["Height"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
65 | public double Width {
66 | get {
67 | return ((double)(this["Width"]));
68 | }
69 | set {
70 | this["Width"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
77 | public bool Maximized {
78 | get {
79 | return ((bool)(this["Maximized"]));
80 | }
81 | set {
82 | this["Maximized"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.UserScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
89 | public bool Initialized {
90 | get {
91 | return ((bool)(this["Initialized"]));
92 | }
93 | set {
94 | this["Initialized"] = value;
95 | }
96 | }
97 |
98 | [global::System.Configuration.UserScopedSettingAttribute()]
99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
100 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
101 | public double scoreMinWidth
102 | {
103 | get
104 | {
105 | return ((double)(this["scoreMinWidth"]));
106 | }
107 | set
108 | {
109 | this["scoreMinWidth"] = value;
110 | }
111 | }
112 |
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERAVX2.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 0
7 |
8 |
9 | 0
10 |
11 |
12 | 0
13 |
14 |
15 | 0
16 |
17 |
18 | False
19 |
20 |
21 | False
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERAVX2SHA.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BenchMaestro.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
16 | internal sealed partial class SettingsCPUMINERAVX2SHA : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static SettingsCPUMINERAVX2SHA defaultInstance = ((SettingsCPUMINERAVX2SHA)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SettingsCPUMINERAVX2SHA())));
19 |
20 | public static SettingsCPUMINERAVX2SHA Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
29 | public double Top {
30 | get {
31 | return ((double)(this["Top"]));
32 | }
33 | set {
34 | this["Top"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
41 | public double Left {
42 | get {
43 | return ((double)(this["Left"]));
44 | }
45 | set {
46 | this["Left"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
53 | public double Height {
54 | get {
55 | return ((double)(this["Height"]));
56 | }
57 | set {
58 | this["Height"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
65 | public double Width {
66 | get {
67 | return ((double)(this["Width"]));
68 | }
69 | set {
70 | this["Width"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
77 | public bool Maximized {
78 | get {
79 | return ((bool)(this["Maximized"]));
80 | }
81 | set {
82 | this["Maximized"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.UserScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
89 | public bool Initialized {
90 | get {
91 | return ((bool)(this["Initialized"]));
92 | }
93 | set {
94 | this["Initialized"] = value;
95 | }
96 | }
97 |
98 | [global::System.Configuration.UserScopedSettingAttribute()]
99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
100 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
101 | public double scoreMinWidth
102 | {
103 | get
104 | {
105 | return ((double)(this["scoreMinWidth"]));
106 | }
107 | set
108 | {
109 | this["scoreMinWidth"] = value;
110 | }
111 | }
112 |
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERAVX2SHA.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 0
7 |
8 |
9 | 0
10 |
11 |
12 | 0
13 |
14 |
15 | 0
16 |
17 |
18 | False
19 |
20 |
21 | False
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERAVX2SHAVAES.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BenchMaestro.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
16 | internal sealed partial class SettingsCPUMINERAVX2SHAVAES : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static SettingsCPUMINERAVX2SHAVAES defaultInstance = ((SettingsCPUMINERAVX2SHAVAES)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SettingsCPUMINERAVX2SHAVAES())));
19 |
20 | public static SettingsCPUMINERAVX2SHAVAES Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
29 | public double Top {
30 | get {
31 | return ((double)(this["Top"]));
32 | }
33 | set {
34 | this["Top"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
41 | public double Left {
42 | get {
43 | return ((double)(this["Left"]));
44 | }
45 | set {
46 | this["Left"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
53 | public double Height {
54 | get {
55 | return ((double)(this["Height"]));
56 | }
57 | set {
58 | this["Height"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
65 | public double Width {
66 | get {
67 | return ((double)(this["Width"]));
68 | }
69 | set {
70 | this["Width"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
77 | public bool Maximized {
78 | get {
79 | return ((bool)(this["Maximized"]));
80 | }
81 | set {
82 | this["Maximized"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.UserScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
89 | public bool Initialized {
90 | get {
91 | return ((bool)(this["Initialized"]));
92 | }
93 | set {
94 | this["Initialized"] = value;
95 | }
96 | }
97 |
98 | [global::System.Configuration.UserScopedSettingAttribute()]
99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
100 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
101 | public double scoreMinWidth
102 | {
103 | get
104 | {
105 | return ((double)(this["scoreMinWidth"]));
106 | }
107 | set
108 | {
109 | this["scoreMinWidth"] = value;
110 | }
111 | }
112 |
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERAVX2SHAVAES.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 0
7 |
8 |
9 | 0
10 |
11 |
12 | 0
13 |
14 |
15 | 0
16 |
17 |
18 | False
19 |
20 |
21 | False
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERAVX512.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BenchMaestro.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
16 | internal sealed partial class SettingsCPUMINERAVX512 : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static SettingsCPUMINERAVX512 defaultInstance = ((SettingsCPUMINERAVX512)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SettingsCPUMINERAVX512())));
19 |
20 | public static SettingsCPUMINERAVX512 Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
29 | public double Top {
30 | get {
31 | return ((double)(this["Top"]));
32 | }
33 | set {
34 | this["Top"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
41 | public double Left {
42 | get {
43 | return ((double)(this["Left"]));
44 | }
45 | set {
46 | this["Left"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
53 | public double Height {
54 | get {
55 | return ((double)(this["Height"]));
56 | }
57 | set {
58 | this["Height"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
65 | public double Width {
66 | get {
67 | return ((double)(this["Width"]));
68 | }
69 | set {
70 | this["Width"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
77 | public bool Maximized {
78 | get {
79 | return ((bool)(this["Maximized"]));
80 | }
81 | set {
82 | this["Maximized"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.UserScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
89 | public bool Initialized {
90 | get {
91 | return ((bool)(this["Initialized"]));
92 | }
93 | set {
94 | this["Initialized"] = value;
95 | }
96 | }
97 |
98 | [global::System.Configuration.UserScopedSettingAttribute()]
99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
100 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
101 | public double scoreMinWidth
102 | {
103 | get
104 | {
105 | return ((double)(this["scoreMinWidth"]));
106 | }
107 | set
108 | {
109 | this["scoreMinWidth"] = value;
110 | }
111 | }
112 |
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERAVX512.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 0
7 |
8 |
9 | 0
10 |
11 |
12 | 0
13 |
14 |
15 | 0
16 |
17 |
18 | False
19 |
20 |
21 | False
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERAVX512SHAVAES.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BenchMaestro.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
16 | internal sealed partial class SettingsCPUMINERAVX512SHAVAES : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static SettingsCPUMINERAVX512SHAVAES defaultInstance = ((SettingsCPUMINERAVX512SHAVAES)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SettingsCPUMINERAVX512SHAVAES())));
19 |
20 | public static SettingsCPUMINERAVX512SHAVAES Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
29 | public double Top {
30 | get {
31 | return ((double)(this["Top"]));
32 | }
33 | set {
34 | this["Top"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
41 | public double Left {
42 | get {
43 | return ((double)(this["Left"]));
44 | }
45 | set {
46 | this["Left"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
53 | public double Height {
54 | get {
55 | return ((double)(this["Height"]));
56 | }
57 | set {
58 | this["Height"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
65 | public double Width {
66 | get {
67 | return ((double)(this["Width"]));
68 | }
69 | set {
70 | this["Width"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
77 | public bool Maximized {
78 | get {
79 | return ((bool)(this["Maximized"]));
80 | }
81 | set {
82 | this["Maximized"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.UserScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
89 | public bool Initialized {
90 | get {
91 | return ((bool)(this["Initialized"]));
92 | }
93 | set {
94 | this["Initialized"] = value;
95 | }
96 | }
97 |
98 | [global::System.Configuration.UserScopedSettingAttribute()]
99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
100 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
101 | public double scoreMinWidth
102 | {
103 | get
104 | {
105 | return ((double)(this["scoreMinWidth"]));
106 | }
107 | set
108 | {
109 | this["scoreMinWidth"] = value;
110 | }
111 | }
112 |
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERAVX512SHAVAES.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 0
7 |
8 |
9 | 0
10 |
11 |
12 | 0
13 |
14 |
15 | 0
16 |
17 |
18 | False
19 |
20 |
21 | False
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERSSE2.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BenchMaestro.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
16 | internal sealed partial class SettingsCPUMINERSSE2 : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static SettingsCPUMINERSSE2 defaultInstance = ((SettingsCPUMINERSSE2)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SettingsCPUMINERSSE2())));
19 |
20 | public static SettingsCPUMINERSSE2 Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
29 | public double Top {
30 | get {
31 | return ((double)(this["Top"]));
32 | }
33 | set {
34 | this["Top"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
41 | public double Left {
42 | get {
43 | return ((double)(this["Left"]));
44 | }
45 | set {
46 | this["Left"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
53 | public double Height {
54 | get {
55 | return ((double)(this["Height"]));
56 | }
57 | set {
58 | this["Height"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
65 | public double Width {
66 | get {
67 | return ((double)(this["Width"]));
68 | }
69 | set {
70 | this["Width"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
77 | public bool Maximized {
78 | get {
79 | return ((bool)(this["Maximized"]));
80 | }
81 | set {
82 | this["Maximized"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.UserScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
89 | public bool Initialized {
90 | get {
91 | return ((bool)(this["Initialized"]));
92 | }
93 | set {
94 | this["Initialized"] = value;
95 | }
96 | }
97 |
98 | [global::System.Configuration.UserScopedSettingAttribute()]
99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
100 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
101 | public double scoreMinWidth
102 | {
103 | get
104 | {
105 | return ((double)(this["scoreMinWidth"]));
106 | }
107 | set
108 | {
109 | this["scoreMinWidth"] = value;
110 | }
111 | }
112 |
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERSSE2.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 0
7 |
8 |
9 | 0
10 |
11 |
12 | 0
13 |
14 |
15 | 0
16 |
17 |
18 | False
19 |
20 |
21 | False
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERSSE42.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BenchMaestro.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
16 | internal sealed partial class SettingsCPUMINERSSE42 : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static SettingsCPUMINERSSE42 defaultInstance = ((SettingsCPUMINERSSE42)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SettingsCPUMINERSSE42())));
19 |
20 | public static SettingsCPUMINERSSE42 Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
29 | public double Top {
30 | get {
31 | return ((double)(this["Top"]));
32 | }
33 | set {
34 | this["Top"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
41 | public double Left {
42 | get {
43 | return ((double)(this["Left"]));
44 | }
45 | set {
46 | this["Left"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
53 | public double Height {
54 | get {
55 | return ((double)(this["Height"]));
56 | }
57 | set {
58 | this["Height"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
65 | public double Width {
66 | get {
67 | return ((double)(this["Width"]));
68 | }
69 | set {
70 | this["Width"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
77 | public bool Maximized {
78 | get {
79 | return ((bool)(this["Maximized"]));
80 | }
81 | set {
82 | this["Maximized"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.UserScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
89 | public bool Initialized {
90 | get {
91 | return ((bool)(this["Initialized"]));
92 | }
93 | set {
94 | this["Initialized"] = value;
95 | }
96 | }
97 |
98 | [global::System.Configuration.UserScopedSettingAttribute()]
99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
100 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
101 | public double scoreMinWidth
102 | {
103 | get
104 | {
105 | return ((double)(this["scoreMinWidth"]));
106 | }
107 | set
108 | {
109 | this["scoreMinWidth"] = value;
110 | }
111 | }
112 |
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/Properties/SettingsCPUMINERSSE42.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 0
7 |
8 |
9 | 0
10 |
11 |
12 | 0
13 |
14 |
15 | 0
16 |
17 |
18 | False
19 |
20 |
21 | False
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Properties/SettingsXMRSTAKRX.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BenchMaestro.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
16 | internal sealed partial class SettingsXMRSTAKRX : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static SettingsXMRSTAKRX defaultInstance = ((SettingsXMRSTAKRX)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SettingsXMRSTAKRX())));
19 |
20 | public static SettingsXMRSTAKRX Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
29 | public double Top {
30 | get {
31 | return ((double)(this["Top"]));
32 | }
33 | set {
34 | this["Top"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
41 | public double Left {
42 | get {
43 | return ((double)(this["Left"]));
44 | }
45 | set {
46 | this["Left"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
53 | public double Height {
54 | get {
55 | return ((double)(this["Height"]));
56 | }
57 | set {
58 | this["Height"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
65 | public double Width {
66 | get {
67 | return ((double)(this["Width"]));
68 | }
69 | set {
70 | this["Width"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
77 | public bool Maximized {
78 | get {
79 | return ((bool)(this["Maximized"]));
80 | }
81 | set {
82 | this["Maximized"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.UserScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
89 | public bool Initialized {
90 | get {
91 | return ((bool)(this["Initialized"]));
92 | }
93 | set {
94 | this["Initialized"] = value;
95 | }
96 | }
97 |
98 | [global::System.Configuration.UserScopedSettingAttribute()]
99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
100 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
101 | public double scoreMinWidth
102 | {
103 | get
104 | {
105 | return ((double)(this["scoreMinWidth"]));
106 | }
107 | set
108 | {
109 | this["scoreMinWidth"] = value;
110 | }
111 | }
112 |
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/Properties/SettingsXMRSTAKRX.cs:
--------------------------------------------------------------------------------
1 | namespace BenchMaestro.Properties {
2 |
3 |
4 | // This class allows you to handle specific events on the settings class:
5 | // The SettingChanging event is raised before a setting's value is changed.
6 | // The PropertyChanged event is raised after a setting's value is changed.
7 | // The SettingsLoaded event is raised after the setting values are loaded.
8 | // The SettingsSaving event is raised before the setting values are saved.
9 | internal sealed partial class SettingsXMRSTAKRX {
10 |
11 | public SettingsXMRSTAKRX() {
12 | // // To add event handlers for saving and changing settings, uncomment the lines below:
13 | //
14 | // this.SettingChanging += this.SettingChangingEventHandler;
15 | //
16 | // this.SettingsSaving += this.SettingsSavingEventHandler;
17 | //
18 | }
19 |
20 | private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
21 | // Add code to handle the SettingChangingEvent event here.
22 | }
23 |
24 | private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
25 | // Add code to handle the SettingsSaving event here.
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Properties/SettingsXMRSTAKRX.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 0
7 |
8 |
9 | 0
10 |
11 |
12 | 0
13 |
14 |
15 | 0
16 |
17 |
18 | False
19 |
20 |
21 | False
22 |
23 |
24 | 0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Resources/Max.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mann1x/BenchMaestro/f31b11edfe41924286da2d6e02631dc8ffc8241c/Resources/Max.bmp
--------------------------------------------------------------------------------
/Settings/Settings.txt:
--------------------------------------------------------------------------------
1 | This folder contains the settings files
--------------------------------------------------------------------------------
/Utils/ProcessAsync.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Diagnostics;
3 | using System.Text;
4 | using System.Threading.Tasks;
5 |
6 | ///
7 | /// Process helper with asynchronous interface
8 | /// - Based on https://gist.github.com/Indigo744/b5f3bd50df4b179651c876416bf70d0a
9 | /// - And on https://stackoverflow.com/questions/470256/process-waitforexit-asynchronously
10 | ///
11 | ///
12 |
13 | namespace BenchMaestro {
14 | public static class ProcessAsyncHelper
15 | {
16 | ///
17 | /// Run a process asynchronously
18 | /// To capture STDOUT, set StartInfo.RedirectStandardOutput to TRUE
19 | /// To capture STDERR, set StartInfo.RedirectStandardError to TRUE
20 | ///
21 | /// ProcessStartInfo object
22 | /// If provided, will be written to stdIn
23 | /// The timeout in milliseconds (null for no timeout)
24 | /// Result object
25 | public static async Task RunProcessAsync(ProcessStartInfo startInfo, string stdIn = null, int? timeoutMs = null)
26 | {
27 | var result = new ProcessHelperResult();
28 |
29 | if (!string.IsNullOrWhiteSpace(stdIn))
30 | {
31 | startInfo.RedirectStandardInput = true;
32 | }
33 |
34 | using (var process = new Process() { StartInfo = startInfo, EnableRaisingEvents = true })
35 | {
36 | // List of tasks to wait for a whole process exit
37 | List processTasks = new List();
38 |
39 | // === EXITED Event handling ===
40 | var processExitEvent = new TaskCompletionSource