Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.10.19;
Скачать: CL | DM;

Вниз

Библиотека UniConv   Найти похожие ветки 

 
Друг   (2014-03-05 15:33) [0]

Я уже говорил на форуме, что пилю универсальную компактную быструю библиотеку для переконвертации текста из разных кодировок. Вот состоялся первый пре-альфа релиз: http://sourceforge.net/projects/uniconv/

Собственно на данный момент реализованы функции сравнения между разными типами и кодировками.
Под x64 вот такая картина:
https://a.fsdn.com/con/app/proj/uniconv/screenshots/UniConv.png

Под x86 менее радужная картина, по крайней мере для сравнений ansi <--> ansi, unicode <--> unicode, utf8 <--> utf8. Во-первых, потому что для x86 в RTL эти функции реализованы на ассемблере, во-вторых, потому что не учитывают кодовые страницы, а UniConv напротив смотрит кодировки. (что собственно и продемонстрировано при сравнении строк с разными кодовыми страницами)

Кому нужно - пользуйте сейчас, сообщайте об ошибках (если найдёте), все контакты указаны в исходниках
Будем ждать добавления функционала по конвертации


 
имя   (2014-03-05 19:21) [1]

Удалено модератором


 
имя   (2014-03-05 20:33) [2]

Удалено модератором


 
DVM ©   (2014-03-06 14:08) [3]


> Друг   (05.03.14 15:33) 

На мой взгляд неплохо получается, Дмитрий.


 
Друг   (2014-03-06 15:08) [4]

> DVM ©   (06.03.14 14:08) [3]

Спасибо


 
Rouse_ ©   (2014-03-06 19:04) [5]

Выглядит на первый взгляд намана, правда практического применения (для своих задач) я к сожалению не вижу, а так бы потестил...


 
Друг   (2014-03-06 23:59) [6]

> Rouse_ ©   (06.03.14 19:04) [5]
> Выглядит на первый взгляд намана, правда практического применения
> (для своих задач) я к сожалению не вижу, а так бы потестил...


Ну... я вижу 2 задачи, которые близки к встречающимся в повседневной жизни.
Допустим тебе нужно найти какой-то элемент, где "ключом" является строка (допустим UnicodeString)
В этом случае можно написать не
for i := 0 to Count-1 do
if (Arr[i].Key = Value) then ...

а
for i := 0 to Count-1 do
if ({$ifdef CPUX86}Arr[i].Key = Value{$else}equal_ucs2_ucs2(Arr[i].Key, Value){$endif}) then ...


В этом случае получится профит на x64/ARM

Ну или нужно тебе провести сортировку, но без учёта регистра.
Тогда не нужно писать
if (UpperCase(S1) < UpperCase(S2)) then ...
можно написать
if (compare_ucs2_ucs2_ignorecase(S1, S2) < 0) then ...

Это будет значительно быстрее.

А вообще это дополнительная часть библиотеки. Я просто подумал, что она должна существовать.
Раз уж библиотека, предназначенная для конвертаций текста, то возможность быстро сравнить UnicodeString и UTF8String - быть должна :)

Главное будет впереди. И практическая возможность в первую очередь - чтение и запись текстовых файлов
Можно будет парсить XML и HTML практически во всех возможных кодировках (по стандарту).
Стандарт не охватывает, но у текстового файла может быть BOM для utf-1, utf-ebcdic, scsu, bocu-1. Вот они поддерживаться не будут :) Всё остальное будет


 
Rouse_ ©   (2014-03-07 00:01) [7]


> Друг   (06.03.14 23:59) [6]

У меня есть такие задачи, реализованные и скорость там немного повыше чем у тебя. Поэтому пока шо не вижу профита :)


 
Друг   (2014-03-07 00:08) [8]

> У меня есть такие задачи, реализованные и скорость там немного
> повыше чем у тебя. Поэтому пока шо не вижу профита :)


Кастую добавленный код в бенчмарк :)


 
Rouse_ ©   (2014-03-07 00:29) [9]


> Друг   (07.03.14 00:08) [8]
> Кастую добавленный код в бенчмарк :)

Это будет сложно скрестить с мои движком поиска :)
Но так на всякий случай, я работаю с данными, индекс которых в районе гигабайта (сами данные в районе 60 гиг), скорость выборки около полусекунды :)
Движок есесно свой - никаких баз типа постгреса/оракла не юзаем :)


 
Друг   (2014-03-07 00:33) [10]

> Rouse_ ©   (07.03.14 00:29) [9]

Сдаётся мне, видел я этот движок :)


 
Rouse_ ©   (2014-03-07 00:34) [11]


> Друг   (07.03.14 00:33) [10]

Не, то что ты видел это одна из самых первых реализаций энтого двигла :)


 
Друг   (2014-03-07 00:51) [12]

Понятно :)


 
Германн ©   (2014-03-07 03:31) [13]


> Не, то что ты видел это одна из самых первых реализаций
> энтого двигла :)

В последней реализации энтого двигла было нанято за символическую плату 1ГБ китайцев, каждому из которых была дана табличка с 60 ероглифами. Вы не поверите как эти китайцы быстро находят нужные слова по этим ероглифам!
:)


 
картман ©   (2014-03-07 17:47) [14]


>  Rouse_ ©   (07.03.14 00:29) [9]
>
>
> > Друг   (07.03.14 00:08) [8]
> > Кастую добавленный код в бенчмарк :)
>
> Это будет сложно скрестить с мои движком поиска :)
> Но так на всякий случай, я работаю с данными, индекс которых
> в районе гигабайта (сами данные в районе 60 гиг), скорость
> выборки около полусекунды :)
> Движок есесно свой - никаких баз типа постгреса/оракла не
> юзаем :)

и сколько ж мегабайтищ весит это чудо?


 
Rouse_ ©   (2014-03-07 18:43) [15]


> картман ©   (07.03.14 17:47) [14]

Двигло или данные?
Двигло в районе 700 кб в виде обектника, данные, на текущий момент 93 с половиной гига.


 
Rouse_ ©   (2014-03-07 18:43) [16]


> картман ©   (07.03.14 17:47) [14]

Двигло или данные?
Двигло в районе 700 кб в виде обектника, данные, на текущий момент 93 с половиной гига.


 
картман ©   (2014-03-08 00:19) [17]


> данные, на текущий момент 93 с половиной гига.

откуда столько? Точнее, что за данные?


 
Rouse__   (2014-03-08 00:23) [18]

исс


 
alexdn ©   (2014-03-08 00:32) [19]

В студии Артёма Лебедева есть онлайн кодировщик - http://www.artlebedev.ru/tools/decoder/


 
alexdn ©   (2014-03-08 00:34) [20]

вот там список кодировок - http://www.artlebedev.ru/tools/decoder/info/


 
картман ©   (2014-03-08 00:47) [21]


> Rouse__   (08.03.14 00:23) [18]
>
> исс

Информационно-справочная система? А что за информация? Или какой тип информации? Тексты, картинки, видео или что? Ну просто интересно, что описывает такой объем информации?


 
Друг   (2014-03-08 04:40) [22]

> alexdn ©   (08.03.14 00:32) [19]
> В студии Артёма Лебедева есть онлайн кодировщик - http://www.artlebedev.ru/tools/decoder/
> вот там список кодировок - http://www.artlebedev.ru/tools/decoder/info/


у меня заявлено больше
все кодировки, которые возможно встретить в XML/HTML (согласно стандарту) + все кодировки, которые могут вернуться по GetACP (включая POSIX) + почти все кодировки, на которые указывает BOM (включая например UTF-7 и различные вариации UCS4 unusual octet order)


 
Rouse_ ©   (2014-03-08 17:01) [23]


> картман ©   (08.03.14 00:47) [21]
>
> > Rouse__   (08.03.14 00:23) [18]
> >
> > исс
>
> Информационно-справочная система? А что за информация? Или
> какой тип информации? Тексты, картинки, видео или что? Ну
> просто интересно, что описывает такой объем информации?

http://help.grandsmeta.ru/stroyinfo/


 
Дмитрий СС   (2014-03-08 17:03) [24]


> Ну
> > просто интересно, что описывает такой объем информации?
>

Текст в формате JPEG:)


 
Rouse_ ©   (2014-03-08 17:07) [25]

ЗЫ: информация в формате упрощенного HTML. Правда объем документов большой - по паре десятков метров каждый, обычный браузер не переваривает такие объемы, даже хром (либо зависает либо падает, IE гарантированно падает).


 
Rouse_ ©   (2014-03-08 17:12) [26]

ЗЗЫ: а вообще это сметная нормативная документация по всем регионам России и ближнего зарубежье. Приказы, методички и прочая светотень.
Грубо MSDN для сметчиков :)


 
Друг   (2014-03-08 17:31) [27]

> Rouse_ ©

Безусловно ваша поисковая машина интересна. Но я бы попросил не обсуждать её в моей ветке. По возможности вернуться к теме ветки


 
Rouse_ ©   (2014-03-08 17:33) [28]

Вообще самая главная закавыка была в том, чтобы заставить ворочаться этого монстра с приемлимой для юзверя скоростью. Изначальная загрузка старой версии данной ИСС была (тока не ржите) - четыре с половиной минуты на базе обьема 12 гигов (в основном просадка была на построении индекса и загрузке данных для полнотекстового поиска). И жрало это чудовище почти всю память 32 битной ОС, т.е. около 3 гигов (конечно, был выставлен флаг  IMAGE_FILE_LARGE_ADDRESS_AWARE).
Поиск был так же по времени пц. Оно искало документ в районе минуты (и то не факт что находило :)

Т.к. разогнать всю эту светотень нормальным образом не получилось - переписали ее с нуля за 8 месяцев и добились того что старт ИСС занимает 6 секунд (с подгрузкой всего вышеперечисленного), поиск практически моментальный (благо двигло позволяет это сделать) и самое главное - чичас эта монструозина отъедает всего-то в районе 400 метров оперативки, остальное хитрым образом кэшируется в свой аналог свопа и доступ к данным при необходимости практически моментальный.

Единственно что не смогли победить (из-за нюансов в движке индекса) это сложные поисковые заросы, где много "токенов", к примеру "1-2-3-скво-йцу"


 
Rouse_ ©   (2014-03-08 17:34) [29]


> Друг   (08.03.14 17:31) [27]

Это форум Димч, т.е. обсуждение.
Не нужно указывать как кому вести :)
В частности я отвечаю на вышепоставленный вопрос.
Но твои доводы я услышал и принял...


 
Друг   (2014-03-08 17:36) [30]

> Rouse_ ©

Есть такие вещи как этика и взаимоуважении. В том чтобы испортить чужую ветку - нет ничего выдающегося


 
Rouse_ ©   (2014-03-08 17:39) [31]

Дима, блин - не нужно мне говорить о этике :)
Этика - это когда тебя банят на месяц - ты честно его ждешь, а не меняешь аккаунт чтобы снова зайти на форум :)


 
Друг   (2014-03-08 17:43) [32]

Тоже верно :)


 
Inovet ©   (2014-03-08 17:49) [33]

> [31] Rouse_ ©   (08.03.14 17:39)
> это когда тебя банят на месяц

Как раз за свою особенную этику.


 
картман ©   (2014-03-08 18:06) [34]


> Rouse_ ©   (08.03.14 17:33) [28]


>
> Единственно что не смогли победить (из-за нюансов в движке
> индекса) это сложные поисковые заросы, где много "токенов",
>  к примеру "1-2-3-скво-йцу"

Этот запрос ищет данное слово?


 
Дмитрий СС   (2014-03-08 18:10) [35]


> добились того что старт ИСС занимает 6 секунд

Уверен и это не предел:)


 
Друг   (2014-03-08 18:13) [36]

> переписали ее с нуля за 8 месяцев и добились того что старт
> ИСС занимает 6 секунд


Мда :)


 
Rouse_ ©   (2014-03-08 18:19) [37]


> картман ©   (08.03.14 18:06) [34]
> >  к примеру "1-2-3-скво-йцу"
> Этот запрос ищет данное слово?

Дефисы - это я показал разделители токенов (т.е. вводят без них).


 
Rouse_ ©   (2014-03-08 18:20) [38]

Точнее поисковый запрос в данном случае таков: "1 2 3 скво йцу"


 
Rouse_ ©   (2014-03-08 18:25) [39]


> Дмитрий СС   (08.03.14 18:10) [35]
> Уверен и это не предел:)

С использованием SSD конечно шустрее, тут упираемся только в скорость харда.


 
картман ©   (2014-03-08 18:28) [40]


> Rouse_ ©   (08.03.14 18:20) [38]
>
> Точнее поисковый запрос в данном случае таков: "1 2 3 скво
> йцу"

странный нюанс:

> Единственно что не смогли победить (из-за нюансов в движке
> индекса)


 
Rouse_ ©   (2014-03-08 18:33) [41]


> картман ©   (08.03.14 18:28) [40]
> странный нюанс:

Для валидации токенов (хотя бы того, что они идут именно в той последовательности, как введено юзверем) нужно подгрузить либо сам документ, либо его карту.
Вопрос: сколько документов из 300 тыщ будут содержать в себе токены "1" и "2"? :)


 
antonn ©   (2014-03-08 18:36) [42]

максимум 300 тысяч, "загрузить" не означает же "хранить"


 
Rouse_ ©   (2014-03-08 18:41) [43]


> antonn ©   (08.03.14 18:36) [42]
> максимум 300 тысяч, "загрузить" не означает же "хранить"

Абсолютно верно, а теперь считаем время на загрузку.
Документы защифрованы ассиметрией на ключе 2048 бит, поэтому поиск работает не с телом документа, а с их картой токенов (грубо массив индексов токенов из общего списка). Т.к. все не лежит в памяти (карты документов выходят далеко за доступную память) их нужно подгружать с харда.
С учетом что у нас в памяти есть только список вида "токен" и массив ID документов в которых этот токен фигурирует, просадка просто бешеная.

Но это сложный случай, обычно юзверь ищет понятные к=ему вещи наподобие "МДС17 трубы" - оть такое ощется моментом.


 
Друг   (2014-03-08 18:43) [44]

> Rouse_ ©

Наймите меня
За 2 месяца я сделаю загрузку ИСС в 3 раза быстрее


 
Rouse_ ©   (2014-03-08 18:45) [45]


> Друг   (08.03.14 18:43) [44]
> > Rouse_ ©
>
> Наймите меня
> За 2 месяца я сделаю загрузку ИСС в 3 раза быстрее

Зная твои способности, я даже не сомневаюсь и лично я За, но это покашо не ко мне, а к Максу. Он открывает вакансии :)


 
Rouse_ ©   (2014-03-08 18:50) [46]

А вообще мне нужен квалифицированный спец низкоуровщик на ядро защиты, разбирающийся в тонкостях реализаций виртульных машин, метафорфов (та хотяб простейших полиморфиков перстановочных, дальше я сам научу).
Но мне эту вакансию никак не одобрят


 
antonn ©   (2014-03-08 18:56) [47]


>  Rouse_ ©   (08.03.14 18:41) [43]

тут вопрос архитектуры, не сомневаюсь что вы ее там переделали и потому добились низкого времени готовности программы к работе. И если потребуется пересмотреть какие-то функции упирающиеся в архитектуру (поиска, например) то это наверное будет сделано если это будет рентабельно, а сейчас устраивает всех.
Я к тому, что без понятия что и как там устроено, но если сейчас оптимизация выполнения уже зашкаливает то наиболее разумным подходом к ускорению было бы пересмотреть архитектуру (тех же индексов).
Софт чисто клиентский или может работать сервером? Во втором случае можно было бы и на большой объем памяти рассчитывать (да и как решение для организации могло быть оптимальней), а там уже и кэши-перекэши.


 
картман ©   (2014-03-08 18:56) [48]


> Rouse_ ©   (08.03.14 18:41) [43]



> Вопрос: сколько документов из 300 тыщ будут содержать в
> себе токены "1" и "2"? :)

их будет намного больше, чем документов, содержащих токены  "скво" и "йцу". Т.е. начать поиск с наиболее редких токенов и далее искать в найденном.


>  старт ИСС занимает 6 секунд

а пользователи у вас маньяки - после загрузки приложения первым делом  кидаются что-то искать))


 
antonn ©   (2014-03-08 18:58) [49]


> Т.е. начать поиск с наиболее редких токенов и далее искать
> в найденном.
>

а в случае возможности отслеживания изменения документов можно вести справочник запросов с кол-вом вхождений и id документов. при изменении документа - перестраивать. Чем чаще юзеры ищут - тем полнее справочник


 
Rouse_ ©   (2014-03-08 19:01) [50]

Кстати Дим, я тут подумал - а мошт реально тебя взять?
У меня стоит задача - перелопатить код защиты на 64 бита.
Работы на самом деле вагон - только на качественный морф в районе 5 месяцев уйдет (все шаблоны морфа перелопачивать с нуля) + отдельная задача VM (там только на 64 битной мнемонике можно ухохотаться + поддержка UNWIND с натива в VM отдельная засада).
Хочешь такой геморрой? :)


 
Rouse_ ©   (2014-03-08 19:03) [51]


> картман ©   (08.03.14 18:56) [48]
> их будет намного больше, чем документов, содержащих токены
>  "скво" и "йцу". Т.е. начать поиск с наиболее редких токенов
> и далее искать в найденном.

Так и делаем :)


> antonn ©   (08.03.14 18:58) [49]
> а в случае возможности отслеживания изменения документов
> можно вести справочник запросов с кол-вом вхождений и id
> документов. при изменении документа - перестраивать. Чем
> чаще юзеры ищут - тем полнее справочник

документы не меняются - выходят их новые редакции, та еще засада :)


 
DevilDevil ©   (2014-03-08 19:16) [52]

> Rouse_ ©   (08.03.14 19:01) [50]

В области моих интересов лежат оптимизации и проектирование систем. Оптимизировать у тебя там ничего не нужно. Перелопачивать твой асм и дизасм на x64 - дело рутинное; что мне не интересно. Ну и потом переезжать в дефолтсити я не буду, максимум - удалёнка.


 
Rouse_ ©   (2014-03-08 19:22) [53]


> DevilDevil ©   (08.03.14 19:16) [52]
> Перелопачивать твой асм и дизасм на x64 - дело рутинное; что мне не интересно.
>  Ну и потом переезжать в дефолтсити я не буду, максимум - удалёнка.

Ну воть, как всегда, фиг где квалифицированных батраков сыщешь :)


 
DevilDevil ©   (2014-03-08 19:30) [54]

> Rouse_ ©

Найми студентов :)
Можно на wasm-е знатоков асма поискать


 
Rouse_ ©   (2014-03-08 19:40) [55]

Студент не подойдет.
Во первых мне нужен сформировавшийся коллега, с которым я могу полноценно обмениваться знаниями (т.е. что-то дам я, а что-то возьму у него).
Чего от студиозиса взять-то, кроме зачетки?
Во вторых мы берем людей на всегда (отсюда практически полное отсутствие текучки кадров), а за это даем хороший оклад и общество не совсем глупых IT спецов. Может не всегда трезвых - но всегда спецов :)


 
Rouse_ ©   (2014-03-08 19:46) [56]


> antonn ©   (08.03.14 18:56) [47]
> Я к тому, что без понятия что и как там устроено, но если
> сейчас оптимизация выполнения уже зашкаливает то наиболее
> разумным подходом к ускорению было бы пересмотреть архитектуру
> (тех же индексов).
> Софт чисто клиентский или может работать сервером? Во втором
> случае можно было бы и на большой объем памяти рассчитывать
> (да и как решение для организации могло быть оптимальней),
>  а там уже и кэши-перекэши.

Пардон, пропустил вопрос - софт работает в новом варианте уже года полтора. Пока что нареканий не было. А про просадку, о которой я говорил, мы узнали только от отдела тестирования. Но т.к. на практике народ не ищет такие хитрые комбинации - то и не заморачивались с оптимизацией данного момента, ес честно :)


 
Германн ©   (2014-03-09 02:12) [57]


> Rouse_ ©   (08.03.14 19:40) [55]
>
> Студент не подойдет.
> Во первых мне нужен сформировавшийся коллега, с которым
> я могу полноценно обмениваться знаниями (т.е. что-то дам
> я, а что-то возьму у него).

Попробуй нанять "пенсионера". Може кто и захочет (но не я) тряхнуть стариной и "вновь скакать на лошади" (с)
:)


 
Германн ©   (2014-03-09 02:13) [58]

Удалено модератором
Примечание: Дубль



Страницы: 1 2 вся ветка

Текущий архив: 2014.10.19;
Скачать: CL | DM;

Наверх




Память: 0.63 MB
Время: 0.007 c
2-1383035938
Den
2013-10-29 12:38
2014.10.19
У кого такое было с pop3. Зависает.


1-1328363110
ololo
2012-02-04 17:45
2014.10.19
Как максимально оптимизировать(убыстрить) этот участок кода?


15-1394656202
Юрий
2014-03-13 00:30
2014.10.19
С днем рождения ! 13 марта 2014 четверг


6-1273586253
istok
2010-05-11 17:57
2014.10.19
TLS library initialization failure...


15-1394127366
0xC0DE
2014-03-06 21:36
2014.10.19
Удалить одну из установленных ОС