Форум: "Прочее";
Текущий архив: 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