Главная страница
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 скво
> йцу"

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

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



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

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

Наверх




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


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


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


11-1255269208
Валера
2009-10-11 17:53
2014.10.19
Как создать PopupMenu для формы, не создавая главного меню ?


15-1394019218
Друг
2014-03-05 15:33
2014.10.19
Библиотека UniConv