URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 109306
[ Назад ]

Исходное сообщение
"Выпуск GNU grep 2.26"

Отправлено opennews , 03-Окт-16 20:52 
Состоялся (http://www.mail-archive.com/info-gnu@gnu.org/msg02191.h... выпуск утилиты для организации поиска данных в текстовых файлах - GNU Grep 2.26 (http://www.gnu.org/software/grep/). В новом выпуске реализовано несколько существенных оптимизаций производительности:

-  Значительно увеличена скорость работы при направлении стандартного вывода в /dev/null;
-  Увеличена производительность поиска с использованием  шаблона из большого числа фиксированных строк ("grep -F"). Подобный поиск теперь осуществляется с применением алгоритма  Ахо—Корасика (https://ru.wikipedia.org/wiki/%D0%90%D0%... вместо ранее используемого алгоритма  Коменца-Вальтера;

-  Ускорена работа поиска в режиме "grep -iF" в условиях когда в системе с многобайтовой локалью применяется маска, содержащая только однобайтные символы;

-  Для ускорения запросов со сложными выражениями (например, обратными ссылками), если не указана опция "-i", теперь применяются скомпилированные регулярные выражения  (regex fastmap);
-  На системах с многобайтовыми локалями увеличена эффективность обработки шаблонов, начинающихся с точки.

URL: http://www.mail-archive.com/info-gnu@gnu.org/msg02191.html
Новость: http://www.opennet.me/opennews/art.shtml?num=45266


Содержание

Сообщения в этом обсуждении
"Выпуск GNU grep 2.26"
Отправлено Michael Shigorin , 03-Окт-16 20:52 
Да уж, кодировки с переменным размером символа всё аукаются и аукаются...

"Выпуск GNU grep 2.26"
Отправлено Crazy Alex , 03-Окт-16 21:02 
Именно. Оставили бы одну латиницу - 256 символов как раз бы хватило на все умляуты и подобное. Всё равно дикарям с кириллицей и прочими иероглифами сложную технику давать нежелательно.

"Выпуск GNU grep 2.26"
Отправлено Аноним , 03-Окт-16 21:31 
Вы или крестик снимите (хватить жопничать байты для UCS-4), или трусы оденьте (KOI8-R во все стринги и чары).

"Выпуск GNU grep 2.26"
Отправлено Stax , 03-Окт-16 21:43 
А UCS-4 не текст, символы с кодом 0, однако. Вы предложите вариант, чтобы без управляющих символов в тексте.

"Выпуск GNU grep 2.26"
Отправлено Аноним , 03-Окт-16 23:15 
Я вообще предлагаю, разработать новую кодировку - машслово со времён 8битовых кодировок выросло в 8 раз, нет ни единой веской причины, кроме legacy, цепляться за эти волшебные 2^8. И да, память в "веские причины" не входит.

"Выпуск GNU grep 2.26"
Отправлено Аноним , 04-Окт-16 10:21 
Нет ни единой веской причины разрабатывать кодировку с 8-байтным символом. Ошибки в некоторых продуктах при работе с символами переменной длины в "веские причины" не входят.

"Выпуск GNU grep 2.26"
Отправлено Аноним , 04-Окт-16 17:35 
Т.е. фортеля с сегментной памятью это хорошо и удобно, что аж перешли на модель плоской памяти? А уж как все были в восторге от циркового фокуса под названием PAE, когда в 32битные указатели вдруг вся эта плоская память стала не помещаться.
Я и говорю, или крестик снимите, или трусы наденьте. Эти грабли с символами переменной длины будут ещё очень долго икаться.

"Выпуск GNU grep 2.26"
Отправлено Аноним , 03-Окт-16 21:46 
Помню, какая истерика была при переходе на 64-битную архитектуру, что, дескать, память жрёт, а тут все строки в 4 раза увеличить. Ну да, ну да.

"Выпуск GNU grep 2.26"
Отправлено Crazy Alex , 04-Окт-16 00:50 
Лично меня текущая ситуация - UTF-8 на диске и то, что удобнее в каждом конкретном случае - в памяти - полностью устраивает. Это Шигорина опечалило то, что алгоритм поменяли. А ведь - слава utf-8 - поменяли не из-за того, что поломан, а только ради оптимизации.

"Выпуск GNU grep 2.26"
Отправлено Аноноим , 04-Окт-16 13:48 
UTF-8 не нужно по причине непредсказуемости того, сколько символов в этой кодировке можно запихнуть в массив размером столько-то байт. Чисто для примера возьмём максимальную длину имени файла в линуксовых файловых системах, то есть 255 байт. Сколько это будет не латинских букв и цифр при UTF-8? А хз: с кириллицей один результат, с иероглифами другой, с каким-нибудь санскритом или греческим третий. Как выделить в оперативке буфер для текста размером, например, в 1024 символа? Умножай это дело на 6, поскольку в теории символ utf-8 может весить до 6 байт и выделяй, ага:) И прочее и прочее.

"Выпуск GNU grep 2.26"
Отправлено Аноним , 04-Окт-16 14:09 
А зачем нужно ровно 1024 символа?

"Выпуск GNU grep 2.26"
Отправлено Аноноим , 04-Окт-16 14:27 
1024 - просто для примера. Ёмкость какого-нибудь буфера для сетевых/файловых операций или ещё чего типа длины строки при использовании паскалеподобных языков, у которых она задаётся заранее вместо нулевого символа в качестве признака конца строки. Вот и думай что лучше: то ли вместо одного килобайта оперативки сразу шесть выделить и не мучиться, то ли ждать грабель из серии "последний символ в отведённой памяти целиком не поместился", либо "ой, блин, файл из архива не вынимается по причине русского и слишком длинного имени".

"Выпуск GNU grep 2.26"
Отправлено Stax , 04-Окт-16 14:18 
Аллокация с запасом, realloc, аллокация связанных структур и т.д. и т.п.
Зачем вы в задаче работы с кодировками опускаетесь до нюансов, как оптимизировать аллокацию? Оставьте это другим. Тем более не могу представить задачи, когда в оперативке надо выделять память под utf-8 представление всего объема неких данных, которые есть в другом представлении юникода. Бред же какой-то. Работаете поблочно...

Проблема с длиной имен, конечно, есть, но только потому, что не придумали универсального и переносимого способа хранить метаинформацию произвольного файла, кроме имени. Вы никакой длиной и кодировкой эту проблему не решите, пока не будет стандарта на метаинформацию. Как дойдет прогресс до работы везде с object storage заместо фс, так и настанет счастье. Ну, относительно...


"Выпуск GNU grep 2.26"
Отправлено iZEN , 04-Окт-16 14:21 
> Как выделить в оперативке буфер для текста размером, например, в 1024 символа? Умножай это дело на 6, поскольку в теории символ utf-8 может весить до 6 байт и выделяй, ага:) И прочее и прочее.

Проблемы сишников явистов и паскалистов не колышат!


"Выпуск GNU grep 2.26"
Отправлено Аноноим , 04-Окт-16 14:28 
>> Как выделить в оперативке буфер для текста размером, например, в 1024 символа? Умножай это дело на 6, поскольку в теории символ utf-8 может весить до 6 байт и выделяй, ага:) И прочее и прочее.
> Проблемы сишников явистов и паскалистов не колышат!

А фортеров не колышат проблемы и явистов с паскалистами:)


"Выпуск GNU grep 2.26"
Отправлено iZEN , 04-Окт-16 21:11 
>>> Как выделить в оперативке буфер для текста размером, например, в 1024 символа? Умножай это дело на 6, поскольку в теории символ utf-8 может весить до 6 байт и выделяй, ага:) И прочее и прочее.
>> Проблемы сишников явистов и паскалистов не колышат!
> А фортеров не колышат проблемы и явистов с паскалистами:)

.точно Это



"Выпуск GNU grep 2.26"
Отправлено Аноним Аналитег , 05-Окт-16 20:23 
Проблемы несколько шире, в MariaDB/MySQL на символ utf8 аллокируется 3 байта, для четырех байтовых символов есть отдельный characterset, для пяти уже нету.

"Выпуск GNU grep 2.26"
Отправлено Michael Shigorin , 04-Окт-16 14:41 
> Это Шигорина опечалило то, что алгоритм поменяли.

Не-а.  Опечалило то, что из-за кривых данных пришлось сперва обтыкивать это всё горами костылей, а потом их ещё перекладывать.

Кто помнит, сколько времени и где/как в coreutils/grep/sed делали поддержку UTF-8 -- тот поймёт.


"Выпуск GNU grep 2.26"
Отправлено Michael Shigorin , 03-Окт-16 22:04 
> Именно. Оставили бы одну латиницу - 256 символов как раз бы хватило
> на все умляуты и подобное. Всё равно дикарям с кириллицей и
> прочими иероглифами сложную технику давать нежелательно.

Особенно мило это утверждение "дикаря" оттеняется разбором подавляющей части достижений "недикарей", сделанной "дикарями" в первом-втором поколении.

PS: подразумевал ИТ, по которым такой разбор на глаза и попадался.


"Выпуск GNU grep 2.26"
Отправлено Crazy Alex , 04-Окт-16 00:47 
Ну дык - дикарское желание пробиться + образование/цивилизация... ;-)

P.S. Если кто-то не понял - предыдущий коммент - сарказм. Я хоть и не сторонник пихания в юникод всего, чего можно, включая клингон, но угадывать "а какая у этой хрени была кодировка" на порядок хуже.


"Выпуск GNU grep 2.26"
Отправлено Michael Shigorin , 04-Окт-16 14:08 
> P.S. Если кто-то не понял - предыдущий коммент - сарказм.

Эт как раз понятно, просто смотришь на достижения "цивилизации" и понимаешь, что лучше б её такой не было вовсе.

> Я хоть и не сторонник пихания в юникод всего, чего можно, включая клингон,
> но угадывать "а какая у этой хрени была кодировка" на порядок хуже.

UCS-4 выглядит разумнее всем, кроме... обратной совместимости с семибитной ASCII.


"Выпуск GNU grep 2.26"
Отправлено noko , 31-Окт-16 02:41 
Ахах, до сих пор 100% ватан)

"Выпуск GNU grep 2.26"
Отправлено Клыкастый , 04-Окт-16 12:13 
Михаил заработался и не смог в сарказм :)

"Выпуск GNU grep 2.26"
Отправлено Vkni , 04-Окт-16 01:17 
> Всё равно дикарям с кириллицей и прочими иероглифами сложную технику давать нежелательно.

Алекс, через 30 лет вы на первое место поставите иероглифы, а дикари у вас будут с алфавитами.


"Выпуск GNU grep 2.26"
Отправлено вотак , 04-Окт-16 11:46 
>> Всё равно дикарям с кириллицей и прочими иероглифами сложную технику давать нежелательно.
> Алекс, через 30 лет вы на первое место поставите иероглифы, а дикари
> у вас будут с алфавитами.

расскажите нам а почему китайцы до сих пор не захватили монголию?


"Выпуск GNU grep 2.26"
Отправлено Аноним , 05-Окт-16 01:55 
Гуглите, что такое "внутренняя монголия" и где она находится.

"Выпуск GNU grep 2.26"
Отправлено Клыкастый , 04-Окт-16 12:14 
> Алекс, через 30 лет вы на первое место поставите иероглифы, а дикари у вас будут с алфавитами.

в Поднебесной уже давно так.


"Выпуск GNU grep 2.26"
Отправлено iZEN , 04-Окт-16 14:22 
>> Алекс, через 30 лет вы на первое место поставите иероглифы, а дикари у вас будут с алфавитами.
> в Поднебесной уже давно так.

В Японии же.



"Выпуск GNU grep 2.26"
Отправлено Клыкастый , 04-Окт-16 14:50 
> В Японии же.

почему у одичавших на острове китайцев будет поиначе? :)



"Выпуск GNU grep 2.26"
Отправлено Crazy Alex , 04-Окт-16 19:20 
Японская письменность весьма условно иероглифы - их там что-то около трёх тысяч употребляется, всё остальное добирается слоговым письмом. Примерным аналогом их иероглифов в алфавитных языках можно считать корни слов.

"Выпуск GNU grep 2.26"
Отправлено Crazy Alex , 04-Окт-16 19:21 
Я ж говорю - дикари

"Выпуск GNU grep 2.26"
Отправлено Crazy Alex , 04-Окт-16 19:16 
Я (возможно, предвзято) придерживаюсь мнения, что цивилизация в её современном/будущем виде с иероглифами совместима плохо. По причинам в основном психологического толка. Пока это подтверждается - товарищи, у которых нет алфавита, всё ещё догоняют и копируют, хоть и на очень хорошем уровне. Оригинальных открытий/изобретений особо не видно.

"Выпуск GNU grep 2.26"
Отправлено Michael Shigorin , 04-Окт-16 19:57 
> товарищи, у которых нет алфавита

Напомню про опиумные войны -- сдаётся мне, разница ещё и в совести либо её отсутствии.


"Выпуск GNU grep 2.26"
Отправлено Vkni , 04-Окт-16 21:26 
> Я (возможно, предвзято) придерживаюсь мнения, что цивилизация в её современном/будущем
> виде с иероглифами совместима плохо.

Алекс, ну ты что, ну зачем учить 33 буквы, когда можно выучить 3 тысячи иероглифов!!! :-)


"Выпуск GNU grep 2.26"
Отправлено fail , 05-Окт-16 00:04 
>> Я (возможно, предвзято) придерживаюсь мнения, что цивилизация в её современном/будущем
>> виде с иероглифами совместима плохо.
> Алекс, ну ты что, ну зачем учить 33 буквы, когда можно выучить
> 3 тысячи иероглифов!!! :-)

угу, и про четыре тональности не забыть - т.сказать развивать музыкальный слух


"Выпуск GNU grep 2.26"
Отправлено Led , 04-Окт-16 23:28 
Это не однобайнтные кодировки аукаются, а однобайтные терминалы.

"Выпуск GNU grep 2.26"
Отправлено Crazy Alex , 05-Окт-16 04:31 
О том, как терминалы аукаются, вообще вспоминать неохота.

"Выпуск GNU grep 2.26"
Отправлено KonstantinB , 03-Окт-16 22:25 
> Значительно увеличена скорость работы при направлении стандартного вывода в /dev/null

Web scale!


"Выпуск GNU grep 2.26"
Отправлено IZh. , 04-Окт-16 10:36 
А ещё вечный цикл стал выполняться в два раза быстрее. ;-)

"Выпуск GNU grep 2.26"
Отправлено Аноним , 04-Окт-16 10:24 
Когда уже добавят поддержку systemd?

Жду-недождусь systemd-grepd с поддержкой multiseat!


"Выпуск GNU grep 2.26"
Отправлено XoRe , 04-Окт-16 15:25 
> Значительно увеличена скорость работы при направлении стандартного вывода в /dev/null;

Просто делает вид, что работает, раз вывод не нужен?


"Выпуск GNU grep 2.26"
Отправлено Анонимкин , 04-Окт-16 19:11 
Вполне рабочий кейз:
[lexa@centos-test ~]$ cat text.txt
some text
[lexa@centos-test ~]$ grep some text.txt > /dev/null
[lexa@centos-test ~]$ echo $?
0
[lexa@centos-test ~]$ grep same text.txt > /dev/null
[lexa@centos-test ~]$ echo $?
1

"Выпуск GNU grep 2.26"
Отправлено Led , 04-Окт-16 23:34 
-q не осилил?

"Выпуск GNU grep 2.26"
Отправлено Crazy Alex , 04-Окт-16 19:21 
Может интересовать только $?, например

"Выпуск GNU grep 2.26"
Отправлено Andrey Mitrofanov , 04-Окт-16 21:28 
>> Значительно увеличена скорость работы при направлении стандартного вывода в /dev/null;
> Просто делает вид, что работает, раз вывод не нужен?

Скорее -m1 -q ж симулирует.

И вообще, там http://git.savannah.gnu.org/gitweb/?p=grep.git&a=search&h=v2... же есть http://git.savannah.gnu.org/gitweb/?p=grep.git;a=commit;h=af... git.

Ускоряем /dev/null, дай Керниган кажому:
This sped up 'seq 10000000000 | grep . >/dev/null' by a factor of 380,000 on my platform


"Выпуск GNU grep 2.26"
Отправлено curious , 05-Окт-16 13:31 
> Значительно увеличена скорость работы при направлении стандартного вывода в /dev/null;

Мне кажется, что нефиг программе знать куда я её вывод перенаправляю (и менять своё поведение из-за этого).


"Выпуск GNU grep 2.26"
Отправлено Andrey Mitrofanov , 06-Окт-16 09:38 
>> Значительно увеличена скорость работы при направлении стандартного вывода в /dev/null;
> Мне кажется, что нефиг программе знать куда я её вывод перенаправляю (и
> менять своё поведение из-за этого).

А я вот уверен, что уважающая _меня_ программа должна грепать в дев-нулл быстро, как только может.


"Выпуск GNU grep 2.26"
Отправлено анон , 07-Окт-16 15:29 
Скажи это --color=auto