Fiber based HTTP client for load testing
Arun
aruncxy at gmail.com
Thu Oct 1 00:35:49 UTC 2020
I have a REST client that can do load test of my REST services.
It uses ikod's dlang-requests under the hood.
https://github.com/ikod/dlang-requests
At the moment I use a thread pool to dispatch the runtime
operation and send the requests to the server.
/// Iterates over the enum members and builds a switch case
statement at compile time.
/// If the input operation matches the case, the runtime
dispatches the corresponding
/// task pool with it's options.
auto pool = new TaskPool(options.threadCount);
foreach (_; 0 .. options.threadCount) {
foreach (__; 0 .. options.iterationCount) {
final switch (options.operation) {
foreach (e; EnumMembers!Operation) {
case e:
pool.put(mixin("task!" ~ e.to!string ~
"(options)"));
break;
}
}
}
}
pool.finish();
As seen, the downside is that the more threads we use the more
memory the app consumes. Is there a way to replace the threads
with fibers in this particular case so that instead of spawning
1000 threads, we spawn 1000 fibers with just 1 thread?
More information about the Digitalmars-d-learn
mailing list