User: norbert
Date: 00/06/09 13:03:59
Modified: src/java/org/spydermq SpyDestination.java SpyMessage.java
SpyMessageConsumer.java SpyQueue.java
SpyQueueReceiver.java SpyQueueSender.java
SpyTopic.java SpyTopicPublisher.java
SpyTopicSubscriber.java
Log:
Performance :
- Cache the hashCode() value
- improve the equals() method
- no more Date objects ( short lived objects for timestamps )
Revision Changes Path
1.2 +14 -2 spyderMQ/src/java/org/spydermq/SpyDestination.java
Index: SpyDestination.java
===================================================================
RCS file: /products/cvs/ejboss/spyderMQ/src/java/org/spydermq/SpyDestination.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SpyDestination.java 2000/05/31 18:06:43 1.1
+++ SpyDestination.java 2000/06/09 20:03:57 1.2
@@ -15,7 +15,7 @@
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class SpyDestination
implements Destination, Serializable
@@ -23,5 +23,17 @@
// Attributes ----------------------------------------------------
protected String name;
-
+ protected int hash;
+
+ SpyDestination(String name)
+ {
+ this.name=name;
+ hash=name.hashCode();
+ }
+
+ public int hashCode()
+ {
+ return hash;
+ }
+
}
1.2 +2 -3 spyderMQ/src/java/org/spydermq/SpyMessage.java
Index: SpyMessage.java
===================================================================
RCS file: /products/cvs/ejboss/spyderMQ/src/java/org/spydermq/SpyMessage.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SpyMessage.java 2000/05/31 18:06:44 1.1
+++ SpyMessage.java 2000/06/09 20:03:57 1.2
@@ -14,7 +14,6 @@
import javax.jms.Destination;
import java.util.Enumeration;
import java.util.Hashtable;
-import java.util.Date;
import java.io.Serializable;
/**
@@ -22,7 +21,7 @@
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class SpyMessage
implements Serializable, Cloneable, Message
@@ -436,7 +435,7 @@
boolean isOutdated()
{
if (jmsExpiration==0) return false;
- long ts=(new Date()).getTime();
+ long ts=System.currentTimeMillis();
return jmsExpiration<ts;
}
1.3 +1 -2 spyderMQ/src/java/org/spydermq/SpyMessageConsumer.java
Index: SpyMessageConsumer.java
===================================================================
RCS file:
/products/cvs/ejboss/spyderMQ/src/java/org/spydermq/SpyMessageConsumer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SpyMessageConsumer.java 2000/06/01 01:14:29 1.2
+++ SpyMessageConsumer.java 2000/06/09 20:03:58 1.3
@@ -12,7 +12,6 @@
import javax.jms.Message;
import javax.jms.Session;
import java.util.LinkedList;
-import java.util.Date;
import org.spydermq.selectors.Selector;
/**
@@ -20,7 +19,7 @@
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class SpyMessageConsumer
implements MessageConsumer
1.2 +6 -10 spyderMQ/src/java/org/spydermq/SpyQueue.java
Index: SpyQueue.java
===================================================================
RCS file: /products/cvs/ejboss/spyderMQ/src/java/org/spydermq/SpyQueue.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SpyQueue.java 2000/05/31 18:06:44 1.1
+++ SpyQueue.java 2000/06/09 20:03:58 1.2
@@ -15,7 +15,7 @@
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class SpyQueue
extends SpyDestination
@@ -26,8 +26,8 @@
SpyQueue(String queueName)
{
- super();
- name=queueName;
+ super(queueName);
+ hash++;
}
// Public --------------------------------------------------------
@@ -47,13 +47,9 @@
//A topic is identified by its name
public boolean equals(Object obj)
{
- if (obj instanceof SpyQueue)
- return ((SpyDestination)obj).name.equals(name);
- return false;
+ if (obj.getClass()!=SpyQueue.class) return false;
+ if (obj.hashCode()!=hash) return false;
+ return ((SpyQueue)obj).name.equals(name);
}
- public int hashCode()
- {
- return name.hashCode()+1;
- }
}
1.4 +3 -4 spyderMQ/src/java/org/spydermq/SpyQueueReceiver.java
Index: SpyQueueReceiver.java
===================================================================
RCS file: /products/cvs/ejboss/spyderMQ/src/java/org/spydermq/SpyQueueReceiver.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SpyQueueReceiver.java 2000/06/05 03:19:23 1.3
+++ SpyQueueReceiver.java 2000/06/09 20:03:58 1.4
@@ -11,14 +11,13 @@
import javax.jms.Queue;
import javax.jms.Message;
import javax.jms.MessageListener;
-import java.util.Date;
/**
* This class implements javax.jms.QueueReceiver
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public class SpyQueueReceiver
extends SpyMessageConsumer
@@ -107,7 +106,7 @@
super.receive(timeOut);
if (timeOut==0) return receive();
- long endTime=(new Date()).getTime()+timeOut;
+ long endTime=System.currentTimeMillis()+timeOut;
setListening(true);
@@ -132,7 +131,7 @@
}
} else Log.log("the connection is stopped !");
- long att=endTime-((new Date()).getTime());
+ long att=endTime-System.currentTimeMillis();
if (att<=0) {
setListening(false);
return null;
1.2 +4 -5 spyderMQ/src/java/org/spydermq/SpyQueueSender.java
Index: SpyQueueSender.java
===================================================================
RCS file: /products/cvs/ejboss/spyderMQ/src/java/org/spydermq/SpyQueueSender.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SpyQueueSender.java 2000/05/31 18:06:45 1.1
+++ SpyQueueSender.java 2000/06/09 20:03:58 1.2
@@ -11,14 +11,13 @@
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.InvalidDestinationException;
-import java.util.Date;
/**
* This class implements javax.jms.QueueSender
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class SpyQueueSender
extends SpyMessageProducer
@@ -74,12 +73,12 @@
//Set the header fields
message.jmsDestination=queue;
message.setJMSDeliveryMode(deliveryMode);
- Date ts=new Date();
- message.setJMSTimestamp(ts.getTime());
+ long ts=System.currentTimeMillis();
+ message.setJMSTimestamp(ts);
if (timeToLive==0) {
message.setJMSExpiration(0);
} else {
- message.setJMSExpiration(timeToLive+ts.getTime());
+ message.setJMSExpiration(timeToLive+ts);
}
message.setJMSPriority(priority);
message.setJMSMessageID(session.getNewMessageID());
1.2 +5 -11 spyderMQ/src/java/org/spydermq/SpyTopic.java
Index: SpyTopic.java
===================================================================
RCS file: /products/cvs/ejboss/spyderMQ/src/java/org/spydermq/SpyTopic.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SpyTopic.java 2000/05/31 18:06:46 1.1
+++ SpyTopic.java 2000/06/09 20:03:58 1.2
@@ -15,7 +15,7 @@
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class SpyTopic
extends SpyDestination
@@ -26,8 +26,7 @@
SpyTopic(String topicName)
{
- super();
- name=topicName;
+ super(topicName);
}
// Public --------------------------------------------------------
@@ -44,16 +43,11 @@
// Object override -----------------------------------------------
- //A topic is identified by its name
public boolean equals(Object obj)
{
- if (obj instanceof SpyTopic)
- return ((SpyDestination)obj).name.equals(name);
- return false;
+ if (obj.getClass()!=SpyTopic.class) return false;
+ if (obj.hashCode()!=hash) return false;
+ return ((SpyDestination)obj).name.equals(name);
}
- public int hashCode()
- {
- return name.hashCode();
- }
}
1.2 +4 -5 spyderMQ/src/java/org/spydermq/SpyTopicPublisher.java
Index: SpyTopicPublisher.java
===================================================================
RCS file:
/products/cvs/ejboss/spyderMQ/src/java/org/spydermq/SpyTopicPublisher.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SpyTopicPublisher.java 2000/05/31 18:06:46 1.1
+++ SpyTopicPublisher.java 2000/06/09 20:03:58 1.2
@@ -11,14 +11,13 @@
import javax.jms.Message;
import javax.jms.Topic;
import javax.jms.InvalidDestinationException;
-import java.util.Date;
/**
* This class implements javax.jms.TopicPublisher
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class SpyTopicPublisher
extends SpyMessageProducer
@@ -74,12 +73,12 @@
//Set the header fields
message.jmsDestination=topic;
message.setJMSDeliveryMode(deliveryMode);
- Date ts=new Date();
- message.setJMSTimestamp(ts.getTime());
+ long ts=System.currentTimeMillis();
+ message.setJMSTimestamp(ts);
if (timeToLive==0) {
message.setJMSExpiration(0);
} else {
- message.setJMSExpiration(timeToLive+ts.getTime());
+ message.setJMSExpiration(timeToLive+ts);
}
message.setJMSPriority(priority);
message.setJMSMessageID(mySession.getNewMessageID());
1.3 +3 -4 spyderMQ/src/java/org/spydermq/SpyTopicSubscriber.java
Index: SpyTopicSubscriber.java
===================================================================
RCS file:
/products/cvs/ejboss/spyderMQ/src/java/org/spydermq/SpyTopicSubscriber.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SpyTopicSubscriber.java 2000/06/01 01:14:29 1.2
+++ SpyTopicSubscriber.java 2000/06/09 20:03:58 1.3
@@ -11,7 +11,6 @@
import javax.jms.Topic;
import javax.jms.Message;
import javax.jms.MessageListener;
-import java.util.Date;
import org.spydermq.selectors.Selector;
@@ -20,7 +19,7 @@
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class SpyTopicSubscriber
extends SpyMessageConsumer
@@ -112,7 +111,7 @@
if (timeOut==0) return receive();
- long endTime=(new Date()).getTime()+timeOut;
+ long endTime=System.currentTimeMillis()+timeOut;
synchronized (messages) {
@@ -129,7 +128,7 @@
if (mes!=null) return mes;
} else Log.notice("the connection is stopped !");
- long att=endTime-((new Date()).getTime());
+ long att=endTime-System.currentTimeMillis();
if (att<=0) return null;
try {