[ 
https://issues.apache.org/jira/browse/DIRMINA-509?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julien Vermillard updated DIRMINA-509:
--------------------------------------

    Fix Version/s: 3.0.0-M1

Yes creating a "session" for each UDP end-ponit is a big overhead, something to 
look for 3.0

> DatagramConnector.connect() is slow compared to connect() with 
> java.net.DatagramSocket
> --------------------------------------------------------------------------------------
>
>                 Key: DIRMINA-509
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-509
>             Project: MINA
>          Issue Type: Improvement
>          Components: Transport
>    Affects Versions: 1.1.6, 2.0.0-M1, 2.0.0-M2
>            Reporter: Wilson Yeung
>             Fix For: 3.0.0-M1
>
>
> I benchmarked Mina 2.0's NioDatagramConnector vs java.net.DatagramSocket on a 
> Linux 2.6 kernel.
> Mina 2.0 NioDatagramConnector, connect(), future.addListener(), 
> session.close()
> 100,000 iterations
> ~20 seconds
> ~5,000 per second
> java.net.DatagramSocket, connect(), disconnect(), close()
> 100,000 iterations
> ~2-3 seconds
> ~30,000 to 50,000 per second 
> I believe the basic problem is that 
> AbstractPollingIoConnector/AbstractPollingIoProcessor assumes that connecting 
> a UDP datagram socket should be a scheduled operation.  For TCP, this makes a 
> lot of sense as connect() should be an asynchronous operation.
> But for UDP, where connect() only performs kernel resource reservation, it 
> makes more sense I think to connect immediately and return an IoFuture with 
> the IoSession already connected and ready.  Looking at the code, I see that 
> the connect() call is indeed made on the same call stack, but 
> ConnectFuture.setSession() is executed by the AbstractPollingIoProcessor 
> worker thread after the IoSession has been properly registered.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to