[
https://issues.apache.org/jira/browse/DIRMINA-1095?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16640257#comment-16640257
]
Paul Gregoire commented on DIRMINA-1095:
----------------------------------------
There is more to Java Streams than syntactic-sugar; while my example is serial,
Streams offer parallelism and Mina could certainly benefit from them. To quote
the API: `Processing elements with an explicit {{for-}}loop is inherently
serial. Streams facilitate parallel execution by reframing the computation as a
pipeline of aggregate operations, rather than as imperative operations on each
individual element. All streams operations can execute either in serial or in
parallel. The stream implementations in the JDK create serial streams unless
parallelism is explicitly requested.`
> Seems like the management f UDP sessions is really unneficient
> --------------------------------------------------------------
>
> Key: DIRMINA-1095
> URL: https://issues.apache.org/jira/browse/DIRMINA-1095
> Project: MINA
> Issue Type: Improvement
> Affects Versions: 2.0.19
> Reporter: Emmanuel Lecharny
> Priority: Major
> Fix For: 2.0.20
>
>
> When we process incoming UDP messages, we iterate over the activated
> {{SelectionKey}}s. That's ok, but for each one of them, we read the data and
> try to flush the scheduled messages. The loop where it's done seems to
> iterate on *all* the managed sessions, for each keys we are processing :
> {code:java}
> private void processReadySessions(Set<SelectionKey> handles) {
> Iterator<SelectionKey> iterator = handles.iterator();
> while (iterator.hasNext()) {
> SelectionKey key = iterator.next();
> DatagramChannel handle = (DatagramChannel) key.channel();
> iterator.remove();
> try {
> if (key.isValid() && key.isReadable()) {
> readHandle(handle);
> }
> if (key.isValid() && key.isWritable()) {
> for (IoSession session : getManagedSessions().values()) {
> scheduleFlush((NioSession) session);
> ...
> {code}
> There is no reason to do so. First, we should not iterate on all the managed
> sessions (we may have thousands), but only the sessions which have something
> to write, and we certainly should not do that for every active key...
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)