Win32 API FindFirstFile y FindNextFile rendimiento vs línea de comandos

Hemos encontrado un problema de rendimiento inesperado al atravesar directorios que buscan archivos usando un patrón de comodín.

Tenemos 180 carpetas cada una con 10.000 archivos. Una búsqueda en la línea de comandos usandodir <pattern> /s Se completa casi instantáneamente (<0.25 segundos). Sin embargo, desde nuestra aplicación la misma búsqueda tarda entre 3 y 4 segundos.

Inicialmente intentamos usarSystem.IO.DirectoryInfo.GetFiles() conSearchOption.AllDirectories y ahora han intentado las llamadas a la API de Win32FindFirstFile() yFindNextFile().

El uso de perfiles de nuestro código indica que la gran mayoría del tiempo de ejecución se gasta en estas llamadas.

Nuestro código se basa en la siguiente publicación del blog:

http://codebetter.com/blogs/matthew.podwysocki/archive/2008/10/16/functional-net-fighting-friction-in-the-bcl-with-directory-getfiles.aspx

Encontramos que esto es lento, así que actualizamos elGetFiles función para tomar unstring patrón de búsqueda en lugar de un predicado.

¿Alguien puede arrojar alguna luz sobre lo que podría estar mal con nuestro enfoque?

Respuestas a la pregunta(3)

Su respuesta a la pregunta