I will have to dig them up. I tested this probably two years ago. The tests were probably pretty basic.
Ralph On May 19, 2014, at 7:49 AM, Kurt Lehrke <[email protected]> wrote: > Just because I was curious, how did you test this or how are you using it? > Developers of Java are pretty convinced that ArrayDeque is faster than a > Stack in most situations. > > Snippet from the java doc for ArrayDeque: > > This class is likely to be faster than > * {@link Stack} when used as a stack, and faster than {@link LinkedList} > * when used as a queue. > * > * <p>Most <tt>ArrayDeque</tt> operations run in amortized constant time. > * Exceptions include {@link #remove(Object) remove}, {@link > * #removeFirstOccurrence removeFirstOccurrence}, {@link #removeLastOccurrence > * removeLastOccurrence}, {@link #contains contains}, {@link #iterator > * iterator.remove()}, and the bulk operations, all of which run in linear > * time. > > Hope this helps! > > Thanks, > Kurt > > From: Ralph Goers [mailto:[email protected]] > Sent: Friday, May 16, 2014 11:07 AM > To: Log4J Developers List > Subject: Re: svn commit: r1593125 - in > /logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j: > ThreadContext.java spi/ThreadContextStack.java > > Believe it or not, when I tested ArrayDeque I found that it was slower than > Stack. > > Ralph > > On May 16, 2014, at 7:33 AM, Gary Gregory <[email protected]> wrote: > > > It's also hard to think of a "stack" as _not_ being a "collection". > > This is a good time to talk about it since we'll be stuck with it when we > ship 2.0. > > Also I could understand why we would not want a java.util.Stack since it is a > Vector, but Java offers ArrayDeque. So why not use that? > > Gary > > > On Fri, May 16, 2014 at 10:29 AM, Gary Gregory <[email protected]> wrote: > All of the ThreadContextStack implementations we have are Collections > though... (that was the case before the refactoring) > > Gary > > > On Thu, May 15, 2014 at 11:19 AM, Ralph Goers <[email protected]> > wrote: > I actually dislike ThreadContextStack but it is there for compatibility with > Log4j 1.x. I guess there are people who use it. I didn’t make it a > Collection in the first place for the exact reasons you mention - they aren’t > used. > > Ralph > > On May 14, 2014, at 9:24 PM, Remko Popma <[email protected]> wrote: > > > Well, the difference is that now the api (the ThreadContext.ContextStack > > interface) extends Collection, so all implementations now *must* support > > all methods declared on Collection. This was not a requirement before. > > (Not sure why spi.ThreadContextStack extends Collection, by the way. > > ThreadContext will not use these methods...) > > > > Remko > > > > Sent from my iPhone > > > >> On 2014/05/08, at 4:35, [email protected] wrote: > >> > >> Author: ggregory > >> Date: Wed May 7 19:35:45 2014 > >> New Revision: 1593125 > >> > >> URL: http://svn.apache.org/r1593125 > >> Log: > >> ThreadContext.ContextStack is already (conceptually) a collection of > >> Strings so it should be a Collection<String> instead of it's sub-interface > >> ThreadContextStack being a Collection<String>. What's the value of > >> ThreadContextStack now? Should we keep it as a placeholder? It is not > >> documented in its Javadoc. Note that all implementations of ContextStack > >> are implementations of ThreadContextStack, so this change has no effect on > >> implementors. Note that Log4jLogEvent holds a ContextStack so this makes > >> it a Collection<String> which happens to save a lot of work for XML and > >> JSON IO for the Jackson based receivers and layouts I am working on. > >> > >> Modified: > >> > >> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java > >> > >> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextStack.java > >> > >> Modified: > >> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java > >> URL: > >> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java?rev=1593125&r1=1593124&r2=1593125&view=diff > >> ============================================================================== > >> --- > >> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java > >> (original) > >> +++ > >> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java > >> Wed May 7 19:35:45 2014 > >> @@ -347,12 +347,7 @@ public final class ThreadContext { > >> /** > >> * The ThreadContext Stack interface. > >> */ > >> - public interface ContextStack extends Serializable { > >> - > >> - /** > >> - * Clears all elements from the stack. > >> - */ > >> - void clear(); > >> + public interface ContextStack extends Serializable, > >> Collection<String> { > >> > >> /** > >> * Returns the element at the top of the stack. > >> > >> Modified: > >> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextStack.java > >> URL: > >> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextStack.java?rev=1593125&r1=1593124&r2=1593125&view=diff > >> ============================================================================== > >> --- > >> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextStack.java > >> (original) > >> +++ > >> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextStack.java > >> Wed May 7 19:35:45 2014 > >> @@ -16,12 +16,10 @@ > >> */ > >> package org.apache.logging.log4j.spi; > >> > >> -import java.util.Collection; > >> - > >> import org.apache.logging.log4j.ThreadContext; > >> > >> /** > >> * > >> */ > >> -public interface ThreadContextStack extends ThreadContext.ContextStack, > >> Collection<String> { > >> +public interface ThreadContextStack extends ThreadContext.ContextStack { > >> } > >> > >> > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > > > -- > E-Mail: [email protected] | [email protected] > Java Persistence with Hibernate, Second Edition > JUnit in Action, Second Edition > Spring Batch in Action > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory > > > > -- > E-Mail: [email protected] | [email protected] > Java Persistence with Hibernate, Second Edition > JUnit in Action, Second Edition > Spring Batch in Action > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory
