From c6ec4f38b0ddb029c263d61fb3c9398cf0724262 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Fri, 6 Jan 2023 19:23:36 +0800 Subject: [PATCH] Optimize speed test --- v2rayN/v2rayN/Handler/SpeedtestHandler.cs | 22 +++++++++++++--- v2rayN/v2rayN/Mode/ServerTestItem.cs | 26 +++++-------------- .../v2rayN/ViewModels/MainWindowViewModel.cs | 2 +- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs index 6f3dbf3b..ed4aec3f 100644 --- a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs +++ b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs @@ -12,6 +12,7 @@ namespace v2rayN.Handler private Config _config; private CoreHandler _coreHandler; private List _selecteds; + private ESpeedActionType _actionType; Action _updateFunc; public SpeedtestHandler(Config config) @@ -23,7 +24,7 @@ namespace v2rayN.Handler { _config = config; _coreHandler = coreHandler; - //_selecteds = Utils.DeepCopy(selecteds); + _actionType = actionType; _updateFunc = update; _selecteds = new List(); @@ -106,7 +107,7 @@ namespace v2rayN.Handler }); } - private async Task RunRealPing() + private Task RunRealPing() { int pid = -1; try @@ -117,7 +118,7 @@ namespace v2rayN.Handler if (pid < 0) { UpdateFunc("", ResUI.FailedToRunCore); - return; + return Task.CompletedTask; } DownloadHandle downloadHandle = new DownloadHandle(); @@ -144,6 +145,8 @@ namespace v2rayN.Handler LazyConfig.Instance.SetTestResult(it.indexId, output, ""); UpdateFunc(it.indexId, output); + int.TryParse(output, out int delay); + it.delay = delay; } catch (Exception ex) { @@ -162,10 +165,17 @@ namespace v2rayN.Handler { if (pid > 0) _coreHandler.CoreStopPid(pid); } + + return Task.CompletedTask; } + private async Task RunSpeedTestAsync() { int pid = -1; + if (_actionType == ESpeedActionType.Mixedtest) + { + _selecteds = _selecteds.OrderBy(t => t.delay).ToList(); + } pid = _coreHandler.LoadCoreConfigString(_config, _selecteds); if (pid < 0) @@ -188,6 +198,10 @@ namespace v2rayN.Handler { continue; } + if (it.delay < 0) + { + continue; + } _ = LazyConfig.Instance.SetTestResult(it.indexId, "", "-1"); UpdateFunc(it.indexId, "", ResUI.Speedtesting); @@ -216,6 +230,8 @@ namespace v2rayN.Handler { await RunRealPing(); + Thread.Sleep(1000); + await RunSpeedTestAsync(); } diff --git a/v2rayN/v2rayN/Mode/ServerTestItem.cs b/v2rayN/v2rayN/Mode/ServerTestItem.cs index 732e8de1..03e0d701 100644 --- a/v2rayN/v2rayN/Mode/ServerTestItem.cs +++ b/v2rayN/v2rayN/Mode/ServerTestItem.cs @@ -3,25 +3,11 @@ [Serializable] class ServerTestItem { - public string indexId - { - get; set; - } - public string address - { - get; set; - } - public int port - { - get; set; - } - public EConfigType configType - { - get; set; - } - public bool allowTest - { - get; set; - } + public string indexId { get; set; } + public string address { get; set; } + public int port { get; set; } + public EConfigType configType { get; set; } + public bool allowTest { get; set; } + public int delay { get; set; } } } diff --git a/v2rayN/v2rayN/ViewModels/MainWindowViewModel.cs b/v2rayN/v2rayN/ViewModels/MainWindowViewModel.cs index 401657fd..92a53ab8 100644 --- a/v2rayN/v2rayN/ViewModels/MainWindowViewModel.cs +++ b/v2rayN/v2rayN/ViewModels/MainWindowViewModel.cs @@ -1087,7 +1087,7 @@ namespace v2rayN.ViewModels return; } //ClearTestResult(); - SpeedtestHandler statistics = new SpeedtestHandler(_config, _coreHandler, lstSelecteds, actionType, UpdateSpeedtestHandler); + new SpeedtestHandler(_config, _coreHandler, lstSelecteds, actionType, UpdateSpeedtestHandler); } private void Export2ClientConfig()