Skip to content

Commit 8ea5a57

Browse files
authored
Optimize speedtest (2dust#8325)
* Optimize stop-speedtest tip display * Fix speedtest termination latency
1 parent 4fb41ae commit 8ea5a57

9 files changed

Lines changed: 75 additions & 23 deletions

File tree

v2rayN/ServiceLib/Resx/ResUI.Designer.cs

Lines changed: 10 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

v2rayN/ServiceLib/Resx/ResUI.fa-Ir.resx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -976,7 +976,10 @@
976976
<value>فعال‌ سازی شتاب‌ دهنده سخت‌ افزاری (نیاز به راه‌اندازی مجدد)</value>
977977
</data>
978978
<data name="SpeedtestingWait" xml:space="preserve">
979-
<value>در انتظار آزمایش (برای پایان دادن به ESC فشار دهید)...</value>
979+
<value>در انتظار آزمایش...</value>
980+
</data>
981+
<data name="SpeedtestingPressEscToExit" xml:space="preserve">
982+
<value>برای پایان دادن به ESC فشار دهید</value>
980983
</data>
981984
<data name="TipDisplayLog" xml:space="preserve">
982985
<value>لطفاً در صورت قطع غیرعادی آن را خاموش کنید</value>

v2rayN/ServiceLib/Resx/ResUI.fr.resx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -976,7 +976,10 @@
976976
<value>Activer l’accélération matérielle (redémarrage requis)</value>
977977
</data>
978978
<data name="SpeedtestingWait" xml:space="preserve">
979-
<value>En attente du test (appuyer sur Échap pour arrêter)...</value>
979+
<value>En attente du test...</value>
980+
</data>
981+
<data name="SpeedtestingPressEscToExit" xml:space="preserve">
982+
<value>Appuyer sur Échap pour arrêter</value>
980983
</data>
981984
<data name="TipDisplayLog" xml:space="preserve">
982985
<value>Désactiver cette option si coupure anormale</value>

v2rayN/ServiceLib/Resx/ResUI.hu.resx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -976,7 +976,10 @@
976976
<value>Hardveres gyorsítás engedélyezése (újraindítást igényel)</value>
977977
</data>
978978
<data name="SpeedtestingWait" xml:space="preserve">
979-
<value>Tesztelésre vár (ESC megnyomásával megszakítható)...</value>
979+
<value>Tesztelésre vár...</value>
980+
</data>
981+
<data name="SpeedtestingPressEscToExit" xml:space="preserve">
982+
<value>ESC megnyomásával megszakítható</value>
980983
</data>
981984
<data name="TipDisplayLog" xml:space="preserve">
982985
<value>Kérjük, kapcsolja ki rendellenes megszakadás esetén</value>

v2rayN/ServiceLib/Resx/ResUI.resx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -976,7 +976,10 @@
976976
<value>Enable hardware acceleration (requires restart)</value>
977977
</data>
978978
<data name="SpeedtestingWait" xml:space="preserve">
979-
<value>Waiting for testing (press ESC to terminate)...</value>
979+
<value>Waiting...</value>
980+
</data>
981+
<data name="SpeedtestingPressEscToExit" xml:space="preserve">
982+
<value>Press ESC to terminate the test</value>
980983
</data>
981984
<data name="TipDisplayLog" xml:space="preserve">
982985
<value>Please turn off when there is an abnormal disconnection</value>

v2rayN/ServiceLib/Resx/ResUI.ru.resx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -976,7 +976,10 @@
976976
<value>Включить аппаратное ускорение (требуется перезагрузка)</value>
977977
</data>
978978
<data name="SpeedtestingWait" xml:space="preserve">
979-
<value>Ожидание тестирования (нажмите ESC для отмены)…</value>
979+
<value>Ожидание тестирования…</value>
980+
</data>
981+
<data name="SpeedtestingPressEscToExit" xml:space="preserve">
982+
<value>нажмите ESC для отмены</value>
980983
</data>
981984
<data name="TipDisplayLog" xml:space="preserve">
982985
<value>Отключите при аномальном разрыве соединения</value>

v2rayN/ServiceLib/Resx/ResUI.zh-Hans.resx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -976,7 +976,10 @@
976976
<value>启用硬件加速 (需重启)</value>
977977
</data>
978978
<data name="SpeedtestingWait" xml:space="preserve">
979-
<value>等待测试中 (按 ESC 终止)...</value>
979+
<value>等待测试...</value>
980+
</data>
981+
<data name="SpeedtestingPressEscToExit" xml:space="preserve">
982+
<value>按 ESC 可终止测试</value>
980983
</data>
981984
<data name="TipDisplayLog" xml:space="preserve">
982985
<value>当有异常断流时请关闭</value>

v2rayN/ServiceLib/Resx/ResUI.zh-Hant.resx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -976,7 +976,10 @@
976976
<value>啟用硬體加速 (需重啟)</value>
977977
</data>
978978
<data name="SpeedtestingWait" xml:space="preserve">
979-
<value>等待測試中(按 ESC 終止)...</value>
979+
<value>等待測試中...</value>
980+
</data>
981+
<data name="SpeedtestingPressEscToExit" xml:space="preserve">
982+
<value>按 ECS 以終止測試</value>
980983
</data>
981984
<data name="TipDisplayLog" xml:space="preserve">
982985
<value>當有異常斷流時請關閉</value>

v2rayN/ServiceLib/Services/SpeedtestService.cs

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,19 @@ public void RunLoop(ESpeedActionType actionType, List<ProfileItem> selecteds)
1919

2020
public void ExitLoop()
2121
{
22-
if (_lstExitLoop.Count > 0)
22+
if (!_lstExitLoop.IsEmpty)
2323
{
2424
_ = UpdateFunc("", ResUI.SpeedtestingStop);
2525

2626
_lstExitLoop.Clear();
2727
}
2828
}
2929

30+
private static bool ShouldStopTest(string exitLoopKey)
31+
{
32+
return !_lstExitLoop.Any(p => p == exitLoopKey);
33+
}
34+
3035
private async Task RunAsync(ESpeedActionType actionType, List<ProfileItem> selecteds)
3136
{
3237
var exitLoopKey = Utils.GetGuid(false);
@@ -103,6 +108,11 @@ private async Task<List<ServerTestItem>> GetClearItem(ESpeedActionType actionTyp
103108
}
104109
}
105110

111+
if (lstSelected.Count > 1 && (actionType == ESpeedActionType.Speedtest || actionType == ESpeedActionType.Mixedtest))
112+
{
113+
NoticeManager.Instance.Enqueue(ResUI.SpeedtestingPressEscToExit);
114+
}
115+
106116
return lstSelected;
107117
}
108118

@@ -152,7 +162,7 @@ private async Task RunRealPingBatchAsync(List<ServerTestItem> lstSelected, strin
152162
var pageSizeNext = pageSize / 2;
153163
if (lstFailed.Count > 0 && pageSizeNext > 0)
154164
{
155-
if (_lstExitLoop.Any(p => p == exitLoopKey) == false)
165+
if (ShouldStopTest(exitLoopKey))
156166
{
157167
await UpdateFunc("", ResUI.SpeedtestingSkip);
158168
return;
@@ -190,6 +200,12 @@ private async Task<bool> RunRealPingAsync(List<ServerTestItem> selecteds, string
190200
{
191201
continue;
192202
}
203+
204+
if (ShouldStopTest(exitLoopKey))
205+
{
206+
return false;
207+
}
208+
193209
tasks.Add(Task.Run(async () =>
194210
{
195211
await DoRealPing(it);
@@ -218,7 +234,7 @@ private async Task RunMixedTestAsync(List<ServerTestItem> selecteds, int concurr
218234
List<Task> tasks = new();
219235
foreach (var it in selecteds)
220236
{
221-
if (_lstExitLoop.Any(p => p == exitLoopKey) == false)
237+
if (ShouldStopTest(exitLoopKey))
222238
{
223239
await UpdateFunc(it.IndexId, "", ResUI.SpeedtestingSkip);
224240
continue;
@@ -234,21 +250,27 @@ private async Task RunMixedTestAsync(List<ServerTestItem> selecteds, int concurr
234250
if (processService is null)
235251
{
236252
await UpdateFunc(it.IndexId, "", ResUI.FailedToRunCore);
253+
return;
237254
}
238-
else
255+
256+
await Task.Delay(1000);
257+
258+
var delay = await DoRealPing(it);
259+
if (blSpeedTest)
239260
{
240-
await Task.Delay(1000);
241-
var delay = await DoRealPing(it);
242-
if (blSpeedTest)
261+
if (ShouldStopTest(exitLoopKey))
262+
{
263+
await UpdateFunc(it.IndexId, "", ResUI.SpeedtestingSkip);
264+
return;
265+
}
266+
267+
if (delay > 0)
268+
{
269+
await DoSpeedTest(downloadHandle, it);
270+
}
271+
else
243272
{
244-
if (delay > 0)
245-
{
246-
await DoSpeedTest(downloadHandle, it);
247-
}
248-
else
249-
{
250-
await UpdateFunc(it.IndexId, "", ResUI.SpeedtestingSkip);
251-
}
273+
await UpdateFunc(it.IndexId, "", ResUI.SpeedtestingSkip);
252274
}
253275
}
254276
}

0 commit comments

Comments
 (0)