mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-04 18:26:39 +02:00
* [Deps] Upgrade Framework Libraries to .NET 9 RC2 * [Common][Build] Update TFM to NET9 * [FileLocksmith][Build] Update TFM to NET9 in Publish Profile * [PreviewPane][Build] Update TFM to NET9 in Publish Profile * [PTRun][Build] Update TFM to NET9 in Publish Profile * [Settings][Build] Update TFM to NET9 in Publish Profile * [MouseWithoutBorders][Analyzers] Resolve WFO1000 by configuring Designer Serialization Visibility * [Deps] Update Microsoft.CodeAnalysis.NetAnalyzers * [Analyzers] Set CA1859,CA2263,CA2022 to be excluded from error * [MouseWithoutBorders] Use System.Threading.Lock to lock instead of object instance * [ColorPicker] Use System.Threading.Lock to lock instead of object instance * [AdvancedPaste] Use System.Threading.Lock to lock instead of object instance * [TextExtractor] Use System.Threading.Lock to lock instead of object instance * [Hosts] Use System.Threading.Lock to lock instead of object instance * [MouseJump] Use System.Threading.Lock to lock instead of object instance * [PTRun] Use System.Threading.Lock to lock instead of object instance * [Wox] Use System.Threading.Lock to lock instead of object instance * [Peek] Use System.Threading.Lock to lock instead of object instance * [PowerAccent] Use System.Threading.Lock to lock instead of object instance * [Settings] Use System.Threading.Lock to lock instead of object instance * [Deps] Update NOTICE.md * [CI] Update .NET version step to target 9.0 * [Build] Attempt to add manual trigger for using Visual Studio Preview for building * [Build] Fix variable typo * [Build][Temporary] set to use preview builds * [Build] Add missing parameters * [Build][Temporary] directly hardcode preview image * [Build][Temporary] Trying ImageOverride * [Build] Revert hardcode and use ImageOverride * [Build] Add env var for adding prerelease argument for vswhere * [Build] Update VCToolsVersion script to use env var to optionally add prerelease version checking * [Build] Remove unneeded parameter * [Build] Re-add parameter in all the right places * [CI][Build] Add NoWarn NU5104 when building with VS Preview * [Deps] Update to stable .NET 9 packages * [Deps] Update NOTICE.md * Everything is WPF and WindowsForms now to fix .NET 9 dependency conflicts * Ensure .NET 9 SDK for tests too --------- Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
82 lines
2.5 KiB
C#
82 lines
2.5 KiB
C#
// Copyright (c) Microsoft Corporation
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Reflection;
|
|
using System.Threading;
|
|
|
|
using Wox.Plugin.Logger;
|
|
|
|
namespace Wox.Infrastructure
|
|
{
|
|
public static class Stopwatch
|
|
{
|
|
private static readonly Dictionary<string, long> Count = new Dictionary<string, long>();
|
|
private static readonly Lock Locker = new Lock();
|
|
|
|
/// <summary>
|
|
/// This stopwatch will appear only in Debug mode
|
|
/// </summary>
|
|
public static long Debug(string message, Action action)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(action);
|
|
|
|
var stopWatch = new System.Diagnostics.Stopwatch();
|
|
stopWatch.Start();
|
|
action();
|
|
stopWatch.Stop();
|
|
var milliseconds = stopWatch.ElapsedMilliseconds;
|
|
string info = $"{message} <{milliseconds}ms>";
|
|
Log.Debug(info, MethodBase.GetCurrentMethod().DeclaringType);
|
|
return milliseconds;
|
|
}
|
|
|
|
public static long Normal(string message, Action action)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(action);
|
|
|
|
var stopWatch = new System.Diagnostics.Stopwatch();
|
|
stopWatch.Start();
|
|
action();
|
|
stopWatch.Stop();
|
|
var milliseconds = stopWatch.ElapsedMilliseconds;
|
|
string info = $"{message} <{milliseconds}ms>";
|
|
Log.Info(info, MethodBase.GetCurrentMethod().DeclaringType);
|
|
return milliseconds;
|
|
}
|
|
|
|
public static void StartCount(string name, Action action)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(action);
|
|
|
|
var stopWatch = new System.Diagnostics.Stopwatch();
|
|
stopWatch.Start();
|
|
action();
|
|
stopWatch.Stop();
|
|
var milliseconds = stopWatch.ElapsedMilliseconds;
|
|
lock (Locker)
|
|
{
|
|
if (Count.ContainsKey(name))
|
|
{
|
|
Count[name] += milliseconds;
|
|
}
|
|
else
|
|
{
|
|
Count[name] = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void EndCount()
|
|
{
|
|
foreach (var key in Count.Keys)
|
|
{
|
|
string info = $"{key} already cost {Count[key]}ms";
|
|
Log.Debug(info, MethodBase.GetCurrentMethod().DeclaringType);
|
|
}
|
|
}
|
|
}
|
|
}
|