I figured out that the most costly thing is the creation of 2 RCW (Runtime Callable Writer) per request. As long as I don't spam COM object instances it should be fine. Althrough it wouldn't be really COM-way for request/response objects.
2014-12-03 23:29 GMT+03:00 Rafael Teixeira <mono...@gmail.com>: > I would say in the interop calls, you'll need to drop COM and implement > custom marshalling to avoid messy copying/conversion of structs and strings > (CLR uses UTF-16 strings internally and I didn't dig into proxygen or your > COM wrapper to see what it uses, but probably it is utf-8 or some > multi-byte encoding, so at least some conversions will be needed) > > On Wed Dec 03 2014 at 3:59:40 PM Nikita Tsukanov <kek...@gmail.com> wrote: > >> Hello. Have you guys heard of the proxygen ( >> https://github.com/facebook/proxygen/ ) - an HTTP stack library recently >> released by Facebook? It supports HTTP, SPDY, websockets and will support >> HTTP/2.0 later. >> >> I was playing around with it and created some initial bindings that allow >> to write code like this: >> >> https://github.com/kekekeks/prowingen/blob/master/managed/Sandbox/Program.cs >> >> It performs rather good, I've got 41K requests/sec on my laptop, but >> obliviously needs a lot more work for production use. >> >> 1) Is anyone interested in this sort of thing? I was initially planning >> to implement an OWIN server on top of proxygen, but now I'm not so sure, >> since I'm currently using my wrapper to libevent's HTTP server ( >> https://github.com/kekekeks/evhttp-sharp/ ) and quite happy with it's >> performance which is almost the same (up to 38K rps on the same machine, >> both benchmarks without thread pooling). The only thing it lacks is >> websocket support, but I can live with that. Proxygen also can't be >> compiled for Windows platform at all, so that server will be mono-only. >> >> 2) Does anyone have benchmark data on Kestrel? When I hammer it with ab >> or wrk it just hangs and stops responding to any requests. If it can keep >> up with proxygen in terms of performance, such bindings would be useless. >> >> 3) Is there any way to speed up interop calls? When I replace C++ handler >> implementation with managed one that does essentially the same thing, the >> performance drops drastically, i. e. from 130K to 40K rps). Currently I'm >> using COM as a bridge ( with some basic infrastructure >> native->managedimplementation - >> https://github.com/kekekeks/prowingen/blob/master/native/include/com.h >> ). Is there a better way? >> >> Regards, >> Nikita >> _______________________________________________ >> Mono-devel-list mailing list >> Mono-devel-list@lists.ximian.com >> http://lists.ximian.com/mailman/listinfo/mono-devel-list >> >
_______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list