• 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: readdir vs. getdirentriesattr
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: readdir vs. getdirentriesattr


  • Subject: Re: readdir vs. getdirentriesattr
  • From: Thomas Tempelmann <email@hidden>
  • Date: Mon, 29 Apr 2019 17:01:17 +0200

Doing more performance tests for directory traversal I ran into a
performance issue with [NSURL contentsOfDirectoryAtURL:]:

See this typical code for scanning a directory:

  NSArray *contentURLs = [fileMgr contentsOfDirectoryAtURL:parentURL
includingPropertiesForKeys:nil options:0 error:nil];

  for (NSURL *url in contentURLs) {

    id value;

    [url getResourceValue:&value forKey:NSURLVolumeIdentifierKey error:nil];


I would have expected the call for fetching NSURLVolumeIdentifierKey to be
rather fast because the upper file system layer should know which volume
this belong to because it has to know which FS driver it has to pass the
calls to. I.e., asking for the volume ID should be much faster than
fetching actual directory data such as the file size, for instance.

However, it turns out that this is just as slow as getting actual data from
the lower levels.

Could it be that the call is not optimized for returning this information
as earlier as possible but that it passes the call down to the lowest level
regardless of need?

I mention this because it degrades the performance of a recursive directory
scan significantly in my tests (on both APFS and HFS) - by more than 30%!
The only thing even slower would be to call stat() instead (for getting the
st_dev value).

Is this worth having looked at? If so, should I report this via bugreporter
(though, when I'm then asked to provide a system profiler report then, it's
not going anywhere)?

Thomas
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Filesystem-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: readdir vs. getdirentriesattr
      • From: Jim Luther <email@hidden>
References: 
 >Re: readdir vs. getdirentriesattr (From: Thomas Tempelmann <email@hidden>)
 >Re: readdir vs. getdirentriesattr (From: Jim Luther <email@hidden>)
 >Re: readdir vs. getdirentriesattr (From: Thomas Tempelmann <email@hidden>)
 >Re: readdir vs. getdirentriesattr (From: Jim Luther <email@hidden>)

  • Prev by Date: Re: readdir vs. getdirentriesattr
  • Next by Date: Re: readdir vs. getdirentriesattr
  • Previous by thread: Re: readdir vs. getdirentriesattr
  • Next by thread: Re: readdir vs. getdirentriesattr
  • Index(es):
    • Date
    • Thread