Всем привет.
DC++ клиенты(с открытым кодом) под профайлером показывают в топе функцию Text::toLower
DC++ в процессе работы получает запросы и ищет файлы в своей шаре вот этим методом
Поиск выполняется без учета регистра в результате: Клиент получив запрос выполняет обход всей своей шары и имена каждого файла/каталога приводит к нижнему регистру (функция Text::toLower) при этом он это делает даже в том случае, если имя файла короче строки поиска.
Первая часть исправления: поменял местами несколько строк (подозрительно просто)
...может я что-то не учел?
Вторая часть: сделаю завтра.
Подписаться на:
Комментарии к сообщению (Atom)
5 комментариев:
Всё правильно, очень хороший патч
а теперь самое главное в Windows файлы регистро независимы :) предлагаю в базу сразу загонять всё в нижнем регистре и функции ToLower отовсюду что связано с шарой выкинуть
Правда потеряется совместимость с Unix
Всё что ещё пришло на ум требует создание индексов, а соответственно больших затрат на память
Теоретически возможен случай, когда при переводе в нижний регистр размер текста в UTF-8 увеличивается: в Турции символ 'I' (1 байт в UTF-8) переводится в 'i без точки', занимающий 2 байта.
В базу лить в нижнем регистре по-моему нельзя... портим оригинал.
Память немного потеряем(сумма букв в именах файлов и каталогов на всю шару + оверхед на STL)
но РАМ сейчас дешевле температуры которую клиент добавляет к системнику от лишней матиматики.
... особенно в условиях лета 2010
p.s.
у меня вчера чуть не помер монитор от перегрева :(
а телек сдох... смотрю новости в 14 дюймах на резервной SUPRA-е купленным для кухни.
2vsu спасибо.
про Турцию не знал :(
p.s.
во второй части поправлю
там будет полностью совместимо с 2-байтовыми иностранцами
(но будет кушать больше памяти)
Отправить комментарий