cvs commit: src/sys/fs/msdosfs msdosfs_conv.c

Nate Lawson njl at FreeBSD.org
Fri Mar 11 15:27:46 PST 2005


njl         2005-03-11 23:27:46 UTC

  FreeBSD src repository

  Modified files:
    sys/fs/msdosfs       msdosfs_conv.c 
  Log:
  The mbnambuf routines combine multiple substrings into a single
  long filename.  Each substring is indexed by the windows ID, a
  sequential one-based value.  The previous code was extremely slow,
  doing a malloc/strcpy/free for each substring.
  
  This code optimizes these routines with this in mind, using the ID
  to index into a single array and concatenating each WIN_CHARS chunk
  at once.  (The last chunk is variable-length.)
  
  This code has been tested as working on an FS with difficult filename
  sizes (255, 13, 26, etc.)  It gives a 77.1% decrease in profiled
  time (total across all functions) and a 73.7% decrease in wall time.
  Test was "ls -laR > /dev/null".
  
  Per-function time savings:
  mbnambuf_init:  -90.7%
  mbnambuf_write: -18.7%
  mbnambuf_flush: -67.1%
  
  MFC after:      1 month
  
  Revision  Changes    Path
  1.40      +42 -37    src/sys/fs/msdosfs/msdosfs_conv.c


More information about the cvs-all mailing list