Bug 4168

Summary: Создать тест на скорость открытия файла в несовпадающем регистре
Product: [Свободные проекты (Open source projects)] EterForceTest Reporter: Vitaly Lipatov <lav>
Component: Общее (Common)Assignee: Иван Загарский <grosso>
Status: CLOSED FIXED QA Contact:
Severity: minor    
Priority: P4 CC: baraka
Version: не указана   
Target Milestone: ---   
Hardware: PC   
OS: All   
URL: http://freesource.info/wiki/WINE/Measurement
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 5906, 42, 3783    

Description Vitaly Lipatov 2009-07-31 19:32:34 MSD
При открытии файла Wine выполняет stat по его имени, если не находит (допустим, из-за несовпадения регистра), начинает выполнять полный перебор.
Предлагаю сделать тест, чтобы понять степень ущерба при тысяче файлов в каталоге.
Конечно, предварительно тест должен измерять время поиска при совпадении регистра файлов. Имена файлов должны генерироваться, и поиск должен выполняться по всем файлам.

При обнаружении существенного замедления можно рассмотреть несколько идей:
 - сначала перебор файлов делать по маске R*.*, где R - первая буква названия файла, инвертированная по регистру, а потом по маске N*.*, где N - первая буква названия файла.
 - пробовать открывать (stat) файл с названием, полностью приведённым к нижнему регистру (и для больших баз рекомендовать переименовывать все файлы)
 -  на определённое время кэшировать для каталога информацию о содержащихся в нём файлах. Это поможет в случае массированного (тысячи файлов) открытия файлов подряд в одном каталоге.
Comment 1 Иван Загарский 2011-01-26 18:33:52 MSK
Приступаю к выполнению
Comment 2 Иван Загарский 2011-01-26 21:30:37 MSK
Создаю отдельный тест для определения выполнения поиска по файлам.
Comment 3 Иван Загарский 2011-01-31 20:56:25 MSK
Определил создание папки, в ней происходит генерация тысячи файлов (имена файлов случайны). Определил функцию поиска файла по маске. Для тысячи фалов составляет 8 мс.
Comment 4 Иван Загарский 2011-02-03 20:07:05 MSK
Вследствие несоответствия программы поставленной задаче, вношу изменения.
Comment 5 Иван Загарский 2011-02-07 22:09:33 MSK
С использованием функции MSTART для определения времени выполнения функции stat получил следующие результаты : 
- при совпадении регистра 120.691 мкс
- при несовпадении 0.160 мкс
Задача выложена на git.eter:/people/grosso/packages/eterforcetest.git
Comment 6 Иван Загарский 2011-02-21 20:20:43 MSK
(В ответ на comment #5)
> С использованием функции MSTART для определения времени выполнения функции stat
> получил следующие результаты : 
> - при совпадении регистра 120.691 мкс
> - при несовпадении 0.160 мкс
> Задача выложена на git.eter:/people/grosso/packages/eterforcetest.git

Данная задача выполнена неверно (программа eterforcetest stat не является рабочей )
входе исправления, обнаружил ошибку удаления созданных файлов и определения времени обращения к файлу при совпадении и несовпадении регистров. После исправления получил следующие результаты:
 - при совпадении регистра 104.246 мкс
 - при несовпадении 105.131 мкс
как видим из результатов замедления обращения к файлу практически нет.
Выложил на it.eter:/people/grosso/packages/timetests.git
Comment 7 Vitaly Lipatov 2011-02-23 15:19:28 MSK
Написал в рассылку wine-devel@ замечания по коммиту.
Comment 8 Иван Загарский 2011-03-18 20:22:58 MSK
Внес исправления. Отправил на  git.eter:/people/grosso/packages/eterforctest.git.
Comment 9 Vitaly Lipatov 2011-03-21 14:43:29 MSK
(В ответ на comment #8)
> Внес исправления. Отправил на 
> git.eter:/people/grosso/packages/eterforctest.git.
Просьба всегда копировать пути и пр., а не писать руками. Это лишает возможности сделать опечатку.

Также неплохо приводить результат выполнения теста.

Давай ты напишешь в эту багу сначала на русском, что должен проверить тест, и как он это делает. Потом посмотрите с Ромой на описание и на результат, и когда вам обоим станет казаться, что задача решена, тогда присылай ещё раз.

И прочитай ещё раз мои замечания, которые я отправлял. Половина не учтена, в том числе по самой сути тестируемых функций. Цель — проверить время открытия файла функцией CreateFile, а не что-то другое.
Comment 10 Иван Загарский 2011-03-25 21:16:53 MSK
Новый вариант выложил на git.eter:/people/grosso/packages/eterforcetest.git
Comment 11 Иван Загарский 2011-03-25 21:33:44 MSK
Получил результаты : 
- при совпадении регистра 252.286mks
- при несовпадении 375.571mks
Comment 12 Иван Загарский 2011-04-02 17:47:57 MSK
Задача решена
Comment 13 Vitaly Lipatov 2012-08-12 22:35:32 MSK
Принял патч в репозиторий, опубликовал.