[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