Chad Stansbury wrote: > Is there a reason you're using an ArrayList rather than a LinkedList for the > DefaultQueue? ArrayLists are great for indexing, but suck for > variable-sized lists w/ lots off adds & removes. LinkedLists, on the other > hand, excel at variable-sized lists with lots of adds/removes, but suck at > indexing. Are you using indexing?
No, I am not using indexing. I will try your suggestions, and report back. > > Also, for the FixedSizedQueue, you might want to consider a circular buffer, > which is already part of the Excalibur Collection classes. > > Chad > > ----- Original Message ----- > From: "Berin Loritsch" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Wednesday, December 19, 2001 12:04 PM > Subject: [Report] Efficiencies of FixedSize and Default Queues > > > >>My initial testing (consisting of running the TestCases several times) >>reveals the cost of an enqueue/dequeue operation. This consists of >>both single element vs. multiple element enqueue/dequeue operations. >>All calls are paired. >> >>The average cost of using the Default Queue is 1.156 usecs per >>enqueue/dequeue operation. This is pretty decent considering that the >>Queue is ThreadSafe (i.e. locking is performed). It uses an ArrayList >>to perform it's duties. >> >>The average cost of using the Fixed Size Queue is 884.0 nsecs per >>enqueue/dequeue operation. This is a little over half the cost of >>the DefaultQueue, and it is also ThreadSafe. It directly manipulates >>an array to perform it's duties. >> >>The array manipulation works like this: >> >>| 1 | 2 | 3 | 4 | 5 | >> * * >> S E >> >>S = Start >>E = End >> >>The current figure shows a queue with 1 element enqueued. When S=E, >>there are no elements enqueued. The next figure shows what happens >>when the element is dequeued: >> >>| 1 | 2 | 3 | 4 | 5 | >> ** >> SE >> >>The Start pointer moves forward when there are elements to dequeue, >>and the End pointer moves forward when a new element is enqueued. It >>is also important to note that the entry where start is is nulled after >>it is retrieved. >> >>The algorithm wraps the pointers back to 0 when they reach the maximum. >> >>This moving pointer system works quite well, and never requires useless >>creation of objects or new queue sizes during the life of the Queue. >> >>-- >> >>"They that give up essential liberty to obtain a little temporary safety >> deserve neither liberty nor safety." >> - Benjamin Franklin >> >> >>-- >>To unsubscribe, e-mail: >> > <mailto:[EMAIL PROTECTED]> > >>For additional commands, e-mail: >> > <mailto:[EMAIL PROTECTED]> > >> > > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > > . > > -- "They that give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety." - Benjamin Franklin -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>