reliable-zeromq
Version:
A collection of reliable zeromq messaging constructs
121 lines (107 loc) • 2.93 kB
text/typescript
import { PerfTest } from "simple-perf";
import { CancellableDelay, Delay } from "../../Src/Utils/Delay";
function SynchronousDelay(): Promise<void>
{
return Delay(0);
}
async function SynchronousDelay1_000(): Promise<void>
{
const lPromise: Promise<void>[] = [];
for (let i: number = 0; i < 1_000; ++i)
{
lPromise.push(Delay(0));
}
await Promise.all(lPromise);
}
async function SynchronousDelay25_000(): Promise<void>
{
const lPromise: Promise<void>[] = [];
for (let i: number = 0; i < 25_000; ++i)
{
lPromise.push(Delay(0));
}
await Promise.all(lPromise);
}
function SynchronousCancellableDelay(): Promise<void>
{
return new CancellableDelay().Create(0);
}
async function SynchronousCancellableDelay1_000(): Promise<void>
{
const lCancellableDelay: CancellableDelay = new CancellableDelay();
const lPromise: Promise<void>[] = [];
for (let i: number = 0; i < 1_000; ++i)
{
lPromise.push(lCancellableDelay.Create(0));
}
await Promise.all(lPromise);
}
async function SynchronousCancellableDelay25_000(): Promise<void>
{
const lCancellableDelay: CancellableDelay = new CancellableDelay();
const lPromise: Promise<void>[] = [];
for (let i: number = 0; i < 25_000; ++i)
{
lPromise.push(lCancellableDelay.Create(0));
}
await Promise.all(lPromise);
}
const lBenchmarks: PerfTest[] =
[
new PerfTest(
{
Name: "Delay > Synchronous [ 1 ]",
Function: SynchronousDelay,
FunctionReturnsPromise: true,
Console: true,
},
),
new PerfTest(
{
Name: "Delay > Synchronous [ 1000 ]",
Function: SynchronousDelay1_000,
FunctionReturnsPromise: true,
Console: true,
},
),
new PerfTest(
{
Name: "Delay > Synchronous [ 25000 ]",
Function: SynchronousDelay25_000,
FunctionReturnsPromise: true,
Console: true,
},
),
new PerfTest(
{
Name: "CancellableDelay > Synchronous [ 1 ]",
Function: SynchronousCancellableDelay,
FunctionReturnsPromise: true,
Console: true,
},
),
new PerfTest(
{
Name: "CancellableDelay > Synchronous [ 1000 ]",
Function: SynchronousCancellableDelay1_000,
FunctionReturnsPromise: true,
Console: true,
},
),
new PerfTest(
{
Name: "CancellableDelay > Synchronous [ 25000 ]",
Function: SynchronousCancellableDelay25_000,
FunctionReturnsPromise: true,
Console: true,
},
),
];
async function RunTests(aBenchmarks: PerfTest[]): Promise<void>
{
for (let i: number = 0; i < aBenchmarks.length; ++i)
{
await aBenchmarks[i].Run();
}
}
RunTests(lBenchmarks);