On 29 Jan 2008, at 22:03, Christopher Nebel wrote:
On Jan 29, 2008, at 1:00 PM, Michelle Steiner wrote:
This script takes four seconds to complete:
tell application "Finder"
set foo to entire contents of (path to documents folder)
end tell
This script runs almost instantaneously:
tell application "Finder"
set foo to entire contents of (path to documents folder) as alias
list
end tell
Essentially, because the first one returns a more complicated
result. Finder spends about the same amount of time on both, but
the first returns a list of object specifiers, all of which will be
at least five levels deep, each of which has to be decoded
separately, whereas the second one returns a list of aliases, which
are atomic objects. If you're doing that in Script Editor, there's
the additional expense of displaying the result -- it can slow way
down when you throw a lot of styled text at it.
Nope, Finder definitely takes far, far longer to return a list of
object specifiers than a list of aliases. Try it on a fatter folder,
e.g. a typical ~/Library folder of 11,000 items: ...
Hm, I think I was looking at the wrong numbers before. Has is
correct, though the reason is basically the same: everyone has to push
more data around for the object specifiers, as opposed to aliases. I
expect the discrepancy gets worse the more items are involved: more
items means more memory, so with enough items, you'll start thrashing.