You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2014/05/05 20:37:55 UTC
svn commit: r1592601 - in
/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl:
CollectorImpl.java EventImpl.java
Author: rhs
Date: Mon May 5 18:37:55 2014
New Revision: 1592601
URL: http://svn.apache.org/r1592601
Log:
PROTON-577: modified EventImpl and CollectorImpl to avoid using LinkedList and to pool events
Modified:
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/CollectorImpl.java
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java
Modified: qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/CollectorImpl.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/CollectorImpl.java?rev=1592601&r1=1592600&r2=1592601&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/CollectorImpl.java (original)
+++ qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/CollectorImpl.java Mon May 5 18:37:55 2014
@@ -35,25 +35,48 @@ import java.util.Queue;
public class CollectorImpl implements Collector
{
- private Queue<Event> events = new LinkedList<Event>();
+ private EventImpl head;
+ private EventImpl tail;
+ private EventImpl free;
public CollectorImpl()
{}
public Event peek()
{
- return events.peek();
+ return head;
}
public void pop()
{
- events.poll();
+ if (head != null) {
+ EventImpl next = head.next;
+ head.next = free;
+ free = head;
+ head.clear();
+ head = next;
+ }
}
public EventImpl put(Event.Type type)
{
- EventImpl event = new EventImpl(type);
- events.add(event);
+ EventImpl event;
+ if (free == null) {
+ event = new EventImpl(type);
+ } else {
+ event = free;
+ free = free.next;
+ event.next = null;
+ event.type = type;
+ }
+
+ if (head == null) {
+ head = event;
+ tail = event;
+ } else {
+ tail.next = event;
+ tail = event;
+ }
return event;
}
Modified: qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java?rev=1592601&r1=1592600&r2=1592601&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java (original)
+++ qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/EventImpl.java Mon May 5 18:37:55 2014
@@ -41,12 +41,23 @@ class EventImpl implements Event
Link link;
Delivery delivery;
Transport transport;
+ EventImpl next;
EventImpl(Type type)
{
this.type = type;
}
+ void clear()
+ {
+ type = null;
+ connection = null;
+ session = null;
+ link = null;
+ delivery = null;
+ transport = null;
+ }
+
public Category getCategory()
{
return type.getCategory();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org