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

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

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



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

Форум: "Прочее";
Текущий архив: 2014.10.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.003 c
15-1394569803
Юрий
2014-03-12 00:30
2014.10.19
С днем рождения ! 12 марта 2014 среда


15-1393927604
Cobalt
2014-03-04 14:06
2014.10.19
<> nil или Assigned()?


15-1394219246
Inovet
2014-03-07 23:07
2014.10.19
XE4 xmlmapper.exe


8-1235584920
dron9999
2009-02-25 21:02
2014.10.19
помогите с компонентом


2-1383130618
Vvasja
2013-10-30 14:56
2014.10.19
Программа поиска для Win7





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский