On 2 Apr 2008, at 00:33, Jim Correia wrote:

On Apr 1, 2008, at 7:19 PM, Martin Redington wrote:

I'm running /sbin/md5 via an NSTask on a number of files (3,000 or so, with a new NSTask each time).

I know the "unix way" is to string together small purpose built tools via pipes.

But it strikes me that NSTask is the wrong hammer for this nail. Computing an md5 programatically yourself is probably the better solution, regardless of the leaky file descriptor problem you are having.

Well, I think I've solved the leak.

[md5Task waitUntilExit];

before

[md5Task release];

does the trick. No fd leaks, and it seems a lot faster generally. You'd kind of hope that NSTask would clean up in its dealloc method, but apparently not.

Jim - any particular reason why you'd not use NSTask?

I guess I'm paying the fork/exec overhead, and some interprocess piping and (a very small bit of) extra I/O for each NSTask. I will actually be caching a lot of the output, so I expect the numbers to be much smaller on subsequent scans, although even once off, 3,000 spawns does seem a bit gratuitous. Performance was much better than I expected though - about 12 minutes for the md5 phase.

I'm still in pre-optimisation mode right now, and I'll probably migrate to the openssl MD5 method in any case, but I'm interested to hear if there's any other reason apart from the above.












_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to