[ENet-discuss] IOCP under Windows, and C#
ryan.rogers at frontiernet.net
ryan.rogers at frontiernet.net
Thu Dec 17 11:07:20 PST 2009
Thanks for the reply.
Yeah, fast and scalable are two differnt things.
As I understand it (and my understanding may be wrong), but any socket server on Windows that is designed to be scalable really needs to use IOCP.
For example, a C# app that uses async UDP (IOCP under the hood) is significantly more scalable than a trivial C app that simply uses WSARecv in a tight loop. When I say significant, I mean that, on identical hardware, the C# IOCP implementation will handle *eight* times as many packets per second before starting to drop them when compared to the C WSARecv implementation. That's a *huge* difference, and even huger when you take into account the inefficiencies of C# compared to straight C.
Given the raw performance of C over C#, this means that an IOCP implementation of ENet would probably scale to 10x as many packets per second before dropping packets.
Has anybody else looked into this?
Thanks,
Ryan
----- Original Message -----
From: "Uj" <ujdevil at gmail.com>
To: "Discussion of the ENet library" <enet-discuss at cubik.org>
Sent: Thursday, December 17, 2009 5:05:41 AM GMT -05:00 US/Canada Eastern
Subject: Re: [ENet-discuss] IOCP under Windows, and C#
Hi,
As far as I remember Enet is not using any IOCP,
only send() and recv() UDP functions.
It's designed to be fast, so I guess it makes sense to call recv() often since most of them are "usefull".
Sorry I don't know any C# implementation.
regards,
Ju
On Thu, Dec 17, 2009 at 3:47 AM, < ryan.rogers at frontiernet.net > wrote:
Hi all,
I'm new to Enet, so far I like what I see. But I have a few questions...
For the server "peer", are IO Completion Ports utilized under Windows in the implementation?
Also, does anybody know of any C# Enet implementation, either a direct port of ENet to C#, or else a PInvoke wrapper? I guess in theory a dll build of enet could be accssed via pinvoke via .Net on Windows and/or Mono under Linux / Mac (obviously different builds of the dll). In theory anyway...
I know Enet has been ported to C# for a few commercial products, but none of them are open.
Thanks in advance for any help with these...
Rhino
_______________________________________________
ENet-discuss mailing list
ENet-discuss at cubik.org
http://lists.cubik.org/mailman/listinfo/enet-discuss
_______________________________________________
ENet-discuss mailing list
ENet-discuss at cubik.org
http://lists.cubik.org/mailman/listinfo/enet-discuss
More information about the ENet-discuss
mailing list