When I made the switch to Java collections I did do some benchmarking. Haven’t 
got the code anymore (this was a decade ago) but at that time, the Java 
collection classes were faster, but the operations were really so fast in both 
cases that the differences were negligible — at that time.

Since then, a decade of improvements has happened in the Java collections so I 
think we can guess where you’ll find performance improvements — and will keep 
getting performance improvements. On one hand you have old classes written in 
an old version of Java, on the other hand you have actively maintained open 
source classes used by millions of programmers and maintained by the 
performance-obsessed authors of Java and the JDK itself.

And now for the opinion piece:
Unless you’re writing extremely performance-sensitive code — even if the 
foundation collections were faster I think it makes sense to use Java 
collections and write to the standard Java collection APIs where you don’t 
*need* foundation collections, because If you’re using foundation specific 
APIs, your code is really already obsolete at the time of writing. I never 
regretted the switch and have hardly seen an NS* collection class in my code in 
years, except where explicitly required as a parameter for passing into WO 
APIs. (that story may be a little different if you’re using EOF which uses the 
NS collections everywhere, so this may not apply in that case).

The Java collection classes do have their warts, the most obvious one to us 
coming from the NS* world being the non-API-differentiation between mutable and 
immutable collections (weird design oversight) but that hasn't plagued me, 
really. It’s just something you’re aware of and don’t really hit often.

Another one for us WO users is that you can’t use KVC operators on Java 
collections (someArray.@sortAsc, .@sum etc). When I made the switch I always 
thought I’d miss these hugely and planned to write operator support into 
ERXComponent’s valueForKeyPath(), but never got around to it since I really 
didn’t miss the operators, preferring to keep my logic in Java rather than 
templates (compile time errors and refactoring support are awesome things).

Probably just saying things you know — but I thought it might have some value 
hearing from someone that moved to Java collections and doesn’t regret it.

Cheers,
- hugi


> On 2 Feb 2025, at 00:29, ocs--- via Webobjects-dev 
> <webobjects-dev@lists.apple.com> wrote:
> 
> Hi there,
> 
> did ever anybody tried some benchmarks to find whether it is better to use WO 
> collections (NSArray, NSDictionary...) as widely as possible (ie essentially 
> anywhere, unless one really needs to store nulls or can't do without 
> ConcurrentHashMap or so), or whether it's better to use standard collections 
> (List, HashMap...) wherever they happen to work properly (which is 
> surprisingly often, but not anywhere)?
> 
> Are they roughly comparable, or are one or the others considerably better?
> 
> Thanks!
> OC
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/hugi%40karlmenn.is
> 
> This email sent to h...@karlmenn.is

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to