• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag
 

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: MDItemCreate very, very, very, slow -- and fails
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MDItemCreate very, very, very, slow -- and fails


  • Subject: Re: MDItemCreate very, very, very, slow -- and fails
  • From: Doug Knowles <email@hidden>
  • Date: Tue, 14 Feb 2006 19:36:30 -0500

Kaelin,

Thanks for pointing out what should have been obvious w.r.t. memory
management; this is my first exposure to the CF... behaviors, but that
doesn't excuse the NS... leaks.

As for the rest, I'm in a prototyping phase and still figuring out
what I can glean from the metadata; as I refine the app, I'll keep
your advice close at hand.

Many thanks for the help!

Doug K;

On 2/14/06, Kaelin Colclasure <email@hidden> wrote:
>
> On Feb 14, 2006, at 11:36 AM, Doug Knowles wrote:
>
> > The code:
> >
> > - (NSDictionary *)loadMetadata
> > {
> >       NSDictionary *md;
> >       NSString *path = [self valueForKey:@"uniqueIDValue"];
> >       NSLog( @"Fetching metadata for %@", path );
> >       MDItemRef mdi = MDItemCreate( nil, (CFStringRef)path );
> >       if  ( mdi != nil )  {
> >               NSArray *attrNames = (NSArray *)MDItemCopyAttributeNames( mdi );
> >               md = (NSDictionary *)MDItemCopyAttributes( mdi, (CFArrayRef)
> > attrNames );
> >               CFRelease(mdi);
> >       }
> >       else  {
> >               md = [NSDictionary dictionary];
> >       }
> >       return md;
> > }
> >
> > ...and some clarifications:
> >
> > - The code does work properly sometimes, then starts failing.
> > - I call this *a lot*; it's not inconceivable that I would invoke this
> > on hundreds of files, so a leak (most likely on my part) could be
> > trouble.
>
> A couple of memory management points to consider:
>
>    - You're leaking the attrNames array each time this is called.
>    - The dictionary this method returns is sometimes autoreleased,
> and sometimes not.
>
> Both of these could account for eventual failures because of memory
> exhaustion. I'd suggest cleaning these up and then trying again.
>
> On a broader note, this code is making three round-trips to mds for
> every item... IFF you can hoist the call to MDItemCopyAttributeNames
> () (assuming that the items all have the same set of attributes), or
> pre-compute a superset of all the attributes that any item my have
> that you care about, you could cut the per-item overhead by 33%.
> Better still, if you could formulate a query that returns all the
> items you care about, and ask for the attributes with the query, you
> can eliminate this loop altogether and get everything back in one
> round-trip. (Of course neither of these optimizations may be
> practical with your specific usage.)
>
> HTH,
>
> -- Kaelin
>
> >
> > Thanks,
> > Doug K;
> >
> >>
> >> What you're describing would be consistent with the framework's MIG
> >> call to mds timing out for some reason. It would be helpful if you
> >> could post a short example snippet that demonstrates this problem. If
> >> you can reproduce it, please file a Radar: <http://
> >> bugreport.apple.com.>.
> >>
> >> HTH,
> >>
> >> -- Kaelin
> >>
> >>
> >  _______________________________________________
> > Do not post admin requests to the list. They will be ignored.
> > Cocoa-dev mailing list      (email@hidden)
> > Help/Unsubscribe/Update your Subscription:
> >
> > This email sent to email@hidden
>
>
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

References: 
 >Re: MDItemCreate very, very, very, slow -- and fails (From: Matt Neuburg <email@hidden>)
 >Re: MDItemCreate very, very, very, slow -- and fails (From: Kaelin Colclasure <email@hidden>)
 >Re: MDItemCreate very, very, very, slow -- and fails (From: Doug Knowles <email@hidden>)
 >Re: MDItemCreate very, very, very, slow -- and fails (From: Kaelin Colclasure <email@hidden>)

  • Prev by Date: Re: MDItemCreate very, very, very, slow -- and fails
  • Next by Date: Re: CoreImage: Newbie can't find memory leak [SOLVED]
  • Previous by thread: Re: MDItemCreate very, very, very, slow -- and fails
  • Next by thread: Re: MDItemCreate very, very, very, slow -- and fails
  • Index(es):
    • Date
    • Thread