[Adium-devl] HOM
Colin Barrett
timber at lava.net
Sat Nov 11 14:38:03 UTC 2006
On Nov 11, 2006, at 4:28 AM, Ofri Wolfus wrote:
> First of all, unit (and speed) tests are included with the source so
> anyone can see the results on their own machine. On my eMac with
> 1.25 GHz G4, 768MB RAM and 10.4.7 the results of this example with
> an array of 3 objects are (each test was performed 1000 times and
> the results are the average times):
> NSEnumerator: 0.000010 sec
> -objectAtIndex: 0.000005 sec
> -selectWhere: 0.000013 sec
> -selectWhere: with a cached Message instance: 0.000005 sec
>
> For large arrays (with 10000 strings) the results are:
> NSEnumerator: 0.005581 sec
> -objectAtIndex: 0.006068 sec
> -selectWhere: 0.007683 sec
> -selectWhere: with a cached Message instance: 0.007740 sec
>
> With that being said, I the differences between the iterations vary
> based on the iteration method (e.g. -selectWhere: vs -rejectWhere:)
> and the collection being used. I think I can safely say that for
> really large collections HOM is a bit faster, but for small
> collections it's a bit slower. Anyhow, I think these slight
> differences in speed are not something that'll be noticeable.
It looks like HOM is slower on that large array than NSEnumerator is.
Also, why is the cached version slower than the non cached one?
Performance aside, I think it would be tough to graft HOM on to our
already existing codebase. It looks great if you're developing
something from scratch and can be very HOMful, but I can see how
putting it in this late in the game would result in a kind of "stapled
on" look to the API. Then again, you may have some excellent
suggestions for refactoring -- don't let us stop you. If you're
serious about trying to refactor parts of Adium to use HOM, I'd be
interested to see you do some work in a branch on it :)
-Colin
More information about the devel
mailing list