LINUX.ORG.RU

В чем выражаются тормоза? Результаты time grep blabla file.txt в студию.

leave ★★★★★
()
Ответ на: комментарий от SI

хм, собрал из исходников последнею версию, но результат не радует

[src]$ (export LANG=POSIX; time ./grep -i UFVbGg /tmp/100MB)
Binary file /tmp/100MB matches

real    0m0.484s
user    0m0.446s
sys     0m0.031s
[src]$ (export LANG=ru_RU.UTF-8; time ./grep -i UFVbGg /tmp/100MB)
Binary file /tmp/100MB matches

real    0m12.381s
user    0m12.221s
sys     0m0.079s
[src]$ ./grep --version
./grep (GNU grep) 2.7
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

/tmp/100MB - 100мб случайных данных

строка «UFVbGg» - присутствует в конце файла

opensuse 11.3 x8_64

x905 ★★★★★
()

Текст в однобайтовых кодировках гораздо проще обрабатывать, чем текст в мультибайтовых кодировках. Так что заметная разница в скорости должна быть.

Deleted
()
Ответ на: комментарий от Deleted

>Текст в однобайтовых кодировках гораздо проще обрабатывать, чем текст в мультибайтовых кодировках. Так что заметная разница в скорости должна быть.
Зависит от кодировки. Ускорить конкретно UTF-8 вполне возможно и, скорее всего, grep уже это делает. С произвольной мультибайтной кодировкой сложнее.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Зависит от кодировки. Ускорить конкретно UTF-8 вполне возможно и, скорее всего, grep уже это делает. С произвольной мультибайтной кодировкой сложнее.

Так хоть заоптимизируйся - всё-равно получится медленнее однобайтовых.

Deleted
()
Ответ на: комментарий от Deleted

ну у меня и POSIX и C и ru_RU.UTF-8 отрабатывают с одинаковой скоростью
если с -i то да - посикс быстрей

megabaks ★★★★
()
Ответ на: комментарий от Deleted

>Так хоть заоптимизируйся - всё-равно получится медленнее однобайтовых.
Да ну?
Частный случай: ищем строку из ASCII в UTF-8 потоке.
В UTF-8 *все* символы вне ASCII кодируются байтами вне ASCII (т.е. с включенным старшим битом). Следовательно, можно искать ASCII-строку точно так же, как и в однобайтном потоке. Ложных срабатываний гарантированно не будет.
Аналогично с поиском UTF-8 строки в UTF-8 потоке.
Тормоза начинаются с более сложными запросами.

x3al ★★★★★
()

> при LC_ALL=«POSIX» летает а при UTF8 начинает жутко тормозить. Чем лечить ?

На моей памяти уже третья тема. Могу предложить на замену аналог на sed.

Lumi ★★★★★
()
Ответ на: комментарий от x3al

Частный случай

Я говорю про общий случай. В общем случае UTF-8 медленнее. Другими словами: если все возможности grep потестить на кодировке ASCII (локаль POSIX/C) и на UTF-8, то в среднем UTF-8 сольёт.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.