Simple web server benchmark - vibe.d is slower than node.js and Go?
Petar
Petar
Sun Sep 24 08:08:35 UTC 2017
On Saturday, 23 September 2017 at 22:07:58 UTC, bitwise wrote:
>
> Of the few different architectures I tried, the fiber based
> approach was much slower. It's possible that my implementation
> did too many unnecessary context switches.
Can you give a bit more details? What kind of architectures do
you mean (hardware, software, ..)?
What was your use case? IO-multiplexing, coarse-grained
high-level cooperative multi-tasking, or range-like data
processing state-machines?
>
> I suppose this is off topic, but for games, or any realtime
> application where things need to run intermittently, but at
> high frequency, and in high numbers, stackless resumable
> functions are a big win. A lot of AI I've been writing lately
> (including some flocking behaviors) have been built on top of
> C# IEnumerators.
Very interesting, I would like to hear more about your approach.
I have kind of the opposite experience with C# v7.1. When writing
synchronous pull-style code I constantly miss the power of D's
ranges, templates and DbI, when I'm forced to work with C#'s
IEnumerable<T> extension methods, expression trees and run-time
reflection.
About push-style asynchronous code, I find async/await unusable
for anything more than the absolute basic stuff. For 95% of my
code in this area I use RX.NET (http://reactivex.io/). I'm sure
they probably use async/await somewhere down in their
implementation, but I just find that it scales very poorly when
complexity increases.
My time "lost" by going from Task<T> to IObservable<T> (yes, even
for single items) is immediately regained by using a few powerful
operators like Buffer, CombineLatest and Switch.
More information about the Digitalmars-d
mailing list