LINUX.ORG.RU

bash. test. оптимизация.


0

1

всем привет.

тут мне в голову такая идея взбрела: а что, если в скриптах(к примеру configure) заменить все «test» на «[[» ? это ведь должно дать прирост в скорости выполнения? не?

т.е. «test» - это же программа, так же, как и «[». (всегда думал, что test и [ - на самом деле одна и та же программа. сейчас глянул - нет. у них объемы разные)

кто-то встречал регулярку/скрипт выполняющий замену «test» на «[[» ?

благодарен.

★★★

ты поломаешь этим совместимость с posix
те, например в dash оно не работает, а в дебиане, емнип, он по-дефолту

ну и вообще, когда заходит вопрос о производительности, лучше викинуть баш, вместе с перло-пистонами

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

да, кастую сюда школьников с нетормозящими перлопистонами

anonymous
()

Задумайся вот над чем: bash - не единственный шелл в *nix-системах. Есть такое понятие: Posix-совместимость.

2anonimus: опередил... :)

OldFatMan
()

Развешивай уши, ща тебе местные одмины будут в них рассказывать о POSIX совместимости на домашней бубунте

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

Ну так, если Posix-совместимость не нужна (скажем, на домашнем компе), то что мешает ТСу пропустить все свои скрипты через sed, чтобы сделать желаемую замену?

Судя по его постам, он уже вполне способен это сделать самостоятельно.

PS: вообще не одмин

OldFatMan
()

Разве bash не имеет своей внутренней реализации test? Это же мёртвому припарки будут.

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

вы все верно поняли. нужно ради «поэкспериментировать». никакая совместимость мне не нужна :)

т.е., по идее это сделать можно..

теперь два вопроса: 1)в чем все же разница между «test» и «[»?, 2)кто-то может подсобить с регуляркой для sed`а? ;)

спасибо.

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

неее.. еще есть пробелы.

чтоб реально изучать, нужны реальные задачи. у меня их пока нет. по этому, изобретаю аналог portage. пока даже успешно =)

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

т.е., по идее это сделать можно..

Тогда делай - никто тебе не запрещает.

1) в чем все же разница между «test» и «[»?

Вот тут я тебе не подскажу - никогда не озадачивался этим вопросом. Сначала использовал test, потом перешёл на [, потому что «так короче». :) Я не админ, и скриптики пишу только для себя, поэтому глубже не копаю.

2) кто-то может подсобить с регуляркой для sed`а?

Так это же ещё одна интересная задачка для тебя! ;) Разве не полезно будет самому придумать, а?

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

Встроенная команда - это одно. (в интерпретатор или SHELL)

А «команда» реализованная внешним бинарником - это другое. (поэтому «команда» взято в ковычки)

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

В скриптах, выполняемых из-под баша, вызывается builtin.

Внешняя команда будет вызываться другим шеллом. В котором встроенной нет.

Соответственно, замена test на скобки даст мизерный прирост (если вообще) в скриптах, выполняемых башем.

Искренне Ваш, К.О.

P.S. ТС-у:

 sed 's/test *\([^;&]\+\)\([;&]\?\)/[ \1 ] \2/g' 

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

P.S. ТС-у:

sed 's/test *\([^;&]\+\)\([;&]\?\)/[ \1 ] \2/g' 

Ну вот - поломал ТСу весь кайф и радость от самостоятельно решённой задачи... ;)

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

А если его не приучать к самостоятельным решениям, а на «пицот тем» сразу давать «пицот готовых рецептов», то вряд ли от этого ему лучше станет. Вообще-то склонность к разумному мышлению у него имеется. Если сумеет развить, будет всё в порядке. Если не сумеет и станет привыкать к получению готовых решений на любой чих, то в ближайшем будущем мы увидим «стопицот тем bash.*» от него.

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

за регулярку спасибо.

но вот с «прежде чем создавать тему» - не согласен. не зная мнения других, нельзя быть уверенным в оптимальности/логичности решения.

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

Так это же ещё одна интересная задачка для тебя! ;) Разве не полезно будет самому придумать, а?

тут не придумывать нужно. тут нужно учить регулярки. кстати о регулярках: у кого-то есть проверенная дока по изучению оных?

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

Это в случае, если у тебя есть уже готовое решение.

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

Извини, влезу с советом:

Прежде чем создавать тему, подумай и реши задачу сам. Потом покрути своё решение и поищи более оптимальное/эффективное. А уж после этого создавай тему, выкладывай то, что наваял и спрашивай: «это оптимально и логично?»

PS: Емнип, ты в предыдущих постах по большей части так и делал. А сейчас что-то заленился. :)

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

J.E.F.Friedl - Mastering Regular Expressions

Есть русский перевод:

Дж.Фридл. Регулярные выражения (серия Библиотека программиста).

Самая лучшая книга по регэкспам. Рекомендую.

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

неее, рыбята... в сабже был простой вопрос: если в скриптах(к примеру configure) заменить все «test» на «[[» ? это ведь должно дать прирост в скорости выполнения?

какое решение я должен был выложить? сам ответить на свой вопрос? ;)

регулярка - это уже последствия ответа на вопрос сабжа. но не сам сабж.

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

спасибо.

чтоб никого не раздражать, закрою-ка тему по скорей. от греха по дальше.

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

Ну так на твой вопрос уже ответили и не один раз. Встроенные команды в bash. Заметного прироста не добьёшься. Если не веришь, проверь сам на практике. Для проверки нужен sed и регулярные выражения. Даже готовое решение привели. Ещё вопросы? ;)

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

Большинство проверок заключается в компилировании небольших тестовых программ. Кто при этом рулит: bash, python, cmake - становится неважно.

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

Молодец. Но есть куча более эффективных способов сделать тормоза.

Встретились два программера, начали пиписьками мерятся. Первый - мои программы работают быстро, второй - а мои правильно.

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

сучечка, ты таки прочитала man?

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

уже потестил и сравнил. проблема действительно не в сабже. просто так работает баш :(

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