Re: Efficiency - Vectors
On Apr 17, 11:15 am, Jason Cavett <jason.cav...@gmail.com> wrote:
So, I've been researching how inefficient (performance-wise) Vectors
are against any other Collection that is not synchronized.
Unfortunately, it seems as if everybody has a different opinion.
I'm wondering - how inefficient are Vectors in Java 1.5 versus non-
synchronized Collection classes? Can anybody point me to an actual
study (other than people spouting off random numbers...anywhere from
2x to 10x's worse). Would it be worth it to refactor an application
I'm working on to switch from Vectors to something else (ArrayList)?
Does it not matter at all?
Thanks
Actually, it depends entirely upon your use cases. However, Vector is
more or less deprecated now, and can be replaced by wrapping any other
type of collection in a synchronized collection wrapper
(Collections.synchronized*)
There are performance benefits if the list is used only from a single
thread. The exact amount of benefit I'm not certain.
Often, using Vector as a thread safe collection doesn't actually
protect against thread bugs, it only masks them. I suggest reading
Java Concurrency in Practice <http://www.javaconcurrencyinpractice.com/
for more information about performance and thread safety.
When ever I see "Vector" in a java project, I automatically think
"Legacy code". Even if you need a synchronized collection, it would
be better to use the appropriate wrapper classes.
Hope this helps,
Daniel.