diff --git a/ArchiSteamFarm/OS.cs b/ArchiSteamFarm/OS.cs index c059653da..ff5df2cbd 100644 --- a/ArchiSteamFarm/OS.cs +++ b/ArchiSteamFarm/OS.cs @@ -22,6 +22,7 @@ using System; using System.IO; using System.Runtime.InteropServices; +using System.Text.RegularExpressions; using ArchiSteamFarm.Localization; namespace ArchiSteamFarm { @@ -29,7 +30,7 @@ namespace ArchiSteamFarm { internal static bool IsUnix => RuntimeInformation.IsOSPlatform(OSPlatform.Linux) || RuntimeInformation.IsOSPlatform(OSPlatform.OSX); internal static string Variant => RuntimeInformation.OSDescription.Trim(); - internal static void Init(bool systemRequired) { + internal static void Init(bool systemRequired, GlobalConfig.EOptimizationMode optimizationMode) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { DisableQuickEditMode(); @@ -37,6 +38,19 @@ namespace ArchiSteamFarm { KeepWindowsSystemActive(); } } + + switch (optimizationMode) { + case GlobalConfig.EOptimizationMode.MaxPerformance: + // No specific tuning required for now, ASF is optimized for max performance by default + break; + case GlobalConfig.EOptimizationMode.MinMemoryUsage: + // We can disable regex cache which will slightly lower memory usage (for a huge performance hit) + Regex.CacheSize = 0; + break; + default: + ASF.ArchiLogger.LogGenericError(string.Format(Strings.WarningUnknownValuePleaseReport, nameof(optimizationMode), optimizationMode)); + return; + } } internal static void UnixSetFileAccessExecutable(string path) { @@ -129,4 +143,4 @@ namespace ArchiSteamFarm { } } } -} \ No newline at end of file +} diff --git a/ArchiSteamFarm/Program.cs b/ArchiSteamFarm/Program.cs index 28c678438..534e27b97 100644 --- a/ArchiSteamFarm/Program.cs +++ b/ArchiSteamFarm/Program.cs @@ -197,7 +197,7 @@ namespace ArchiSteamFarm { ParsePostInitArgs(args); } - OS.Init(SystemRequired); + OS.Init(SystemRequired, GlobalConfig.OptimizationMode); await InitGlobalDatabaseAndServices().ConfigureAwait(false);