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

Tom Rhodes trhodes at FreeBSD.org
Fri Mar 11 16:37:21 PST 2005


On Fri, 11 Mar 2005 23:27:46 +0000 (UTC)
Nate Lawson <njl at FreeBSD.org> wrote:

> 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
> 

That's hot.  :)

-- 
Tom Rhodes


More information about the cvs-all mailing list