Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 660 - Нужно оптимизировать функции сравнения строк   Make a simular bug
Summary: Нужно оптимизировать функции сравнения строк
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Общее (show other bugs)
Version: 1.0.8
Hardware: PC Linux
: P5 normal
Target Milestone: ---
Assignee: Анатолий Лютин
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 132 584 961
  Show dependency treegraph
 
In work:
Reported: 2007-06-29 12:59 MSD by Vitaly Lipatov
Modified: 2008-11-26 19:59 MSK (History)
1 user (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2007-06-29 12:59:42 MSD
Конечно, ещё требуется детальное исследование, нужно провести профайлинг при выполнении отчётов. Предположительно, замедление скорости отчёта связано с использованием строковых функций, которые в WINE медленнее из-за реализации через Unicode?
Например, используются эти:
0028:Ret  KERNEL32.lstrcmpiA() retval=ffffffff ret=20091cda
Нужен тест по измерению их производительности.
Comment 1 Анатолий Лютин 2007-07-17 13:57:23 MSD
Стоит прочитать всем, кто хочет заниматься оптимизацией:
http://www.rsdn.ru/article/philosophy/Optimization.xml
Comment 2 Анатолий Лютин 2007-07-23 13:33:25 MSD
Написал простенький тест на lstrcmpi(), где 1000 раз сравниваются друг с другом 2 массива по 6 различных строк в каждом. 
Промежуточные средние результаты (5 запусков друг за другом):
Винда: 27,6 ms.
Wine: 15.8 ms.
Comment 3 Анатолий Лютин 2007-07-23 13:39:41 MSD
*не 1000, а 5000
Comment 4 Анатолий Лютин 2007-07-23 13:59:05 MSD
Пока непонятно что оптимизировать.
Comment 5 Анатолий Лютин 2007-09-27 12:38:27 MSD
Если оптимизировать по нашему плану (не переводить строки в юникод), то выигрыш 
составляет - вместо 19 мс - 5 мс.То есть на порядок.
Comment 6 Анатолий Лютин 2007-10-04 18:12:07 MSD
Сделал оптимизацию. Запускал в бутылке с 1с77-25 с целларовским вайном и со своим. Тестировал на БД объёмом 1 ГБ. Отчёт - Журнал - ордер. Временной интервал - 1 год.
Мой ванй:4,02 (минутыб секунды)
Cellar: 5,25 
Итого:
Выйгрыш 30 %.

Подготавливаю патч и добавляю в нашу cvs.
Comment 7 Анатолий Лютин 2007-10-05 13:42:11 MSD
Считаю что другие функции lstr* уже написанны в оптимальной форме. Т.к там отсутствуют преобразования в юникод и выделение памяти. lstrcmpi оптимизировал. Так что багу закрываю.
Comment 8 Vitaly Lipatov 2007-10-06 12:17:20 MSD
Отлично. Хороший результат. Теперь у нас не будет отставания от винды. Похоже у них тоже так сделано :)
Для всех ли локалей сделаны таблицы? Надо для русской, белорусской, украинской... Вроде всё.
Comment 9 Vitaly Lipatov 2007-11-10 10:58:17 MSK
Тестирование не показало отличие в скорости. Возможно где-то проблема...
Предлагаю разместить тест на скорость в репозитории wine-etersoft-devel, каталог sort.
Comment 10 Анатолий Лютин 2007-12-14 20:40:38 MSK
Считаем, что всё что возможно мы уже оптимизировали.