[ 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.