aboutsummaryrefslogtreecommitdiff
path: root/lib/Utils/tests/Async
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Utils/tests/Async')
-rw-r--r--lib/Utils/tests/Async/AsyncAccessSerializerTests.cs35
1 files changed, 20 insertions, 15 deletions
diff --git a/lib/Utils/tests/Async/AsyncAccessSerializerTests.cs b/lib/Utils/tests/Async/AsyncAccessSerializerTests.cs
index 3c9bde7..82f9c3a 100644
--- a/lib/Utils/tests/Async/AsyncAccessSerializerTests.cs
+++ b/lib/Utils/tests/Async/AsyncAccessSerializerTests.cs
@@ -147,13 +147,15 @@ namespace VNLib.Utils.Async.Tests
int maxCount = 128;
string serialized = "";
- using CancellationTokenSource cts = new(500);
+ using CancellationTokenSource cts = new(10000);
Task[] asyncArr = new int[maxCount].Select(p => Task.Run(async () =>
{
//Take a lock then random delay, then release
await serializer.WaitAsync(DEFAULT_KEY, cts.Token);
+ await Task.Delay(1);
+
//Increment count
serialized += "0";
@@ -171,9 +173,7 @@ namespace VNLib.Utils.Async.Tests
public void SimplePerformanceComparisonTest()
{
const string DEFAULT_KEY = "default";
-
- //Alloc serailzer base on string
- IAsyncAccessSerializer<string> serializer = new AsyncAccessSerializer<string>(100, 100, StringComparer.Ordinal);
+
const int maxCount = 128;
const int itterations = 20;
@@ -182,55 +182,60 @@ namespace VNLib.Utils.Async.Tests
using CancellationTokenSource cts = new(500);
+ using SemaphoreSlim slim = new(1,1);
+
for (int i = 0; i < itterations; i++)
{
test = "";
- timer.Restart();
+ timer.Restart();
Task[] asyncArr = new int[maxCount].Select(p => Task.Run(async () =>
{
//Take a lock then random delay, then release
- await serializer.WaitAsync(DEFAULT_KEY, cts.Token);
+ await slim.WaitAsync(cts.Token);
//Increment count
test += "0";
- serializer.Release(DEFAULT_KEY);
-
+ slim.Release();
})).ToArray();
Task.WaitAll(asyncArr);
timer.Stop();
- Trace.WriteLine($"Async serialzier test completed in {timer.ElapsedTicks / 10} microseconds");
+ Trace.WriteLine($"SemaphoreSlim test completed in {timer.ElapsedTicks / 10} microseconds");
+
Assert.AreEqual(maxCount, test.Length);
- }
- using SemaphoreSlim slim = new(1,1);
+ }
+
+ //Alloc serailzer base on string
+ IAsyncAccessSerializer<string> serializer = new AsyncAccessSerializer<string>(100, 100, StringComparer.Ordinal);
for (int i = 0; i < itterations; i++)
{
+
test = "";
timer.Restart();
Task[] asyncArr = new int[maxCount].Select(p => Task.Run(async () =>
{
//Take a lock then random delay, then release
- await slim.WaitAsync(cts.Token);
+ await serializer.WaitAsync(DEFAULT_KEY, cts.Token);
//Increment count
test += "0";
- slim.Release();
+ serializer.Release(DEFAULT_KEY);
+
})).ToArray();
Task.WaitAll(asyncArr);
timer.Stop();
- Trace.WriteLine($"SemaphoreSlim test completed in {timer.ElapsedTicks / 10} microseconds");
-
+ Trace.WriteLine($"Async serialzier test completed in {timer.ElapsedTicks / 10} microseconds");
Assert.AreEqual(maxCount, test.Length);
}
}