Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2014.10.19;
Скачать: [xml.tar.bz2];

Вниз

Библиотека 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.61 MB
Время: 0.004 c
11-1231235809
Jon
2009-01-06 12:56
2014.10.19
KOL web sites errors?


2-1383324995
Vvasja
2013-11-01 20:56
2014.10.19
Открыть папку и вфделить файл


15-1394112978
ТНЕ картман
2014-03-06 17:36
2014.10.19
UML-редактор


15-1394599548
Ярлык
2014-03-12 08:45
2014.10.19
Поместить ярлык интернет соединения на рабочий стол


4-1269618816
istok
2010-03-26 18:53
2014.10.19
uac и реестр...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский