Bug 660

Summary: Нужно оптимизировать функции сравнения строк
Product: WINE@Etersoft Reporter: Vitaly Lipatov <lav>
Component: ОбщееAssignee: Анатолий Лютин <vostok>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P5 CC: baraka
Version: 1.0.8   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 132, 584, 961    

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
Считаем, что всё что возможно мы уже оптимизировали.