LINUX.ORG.RU

Не знаю что там быстрее, но в первом случае ты рискуешь поймать глюки, если в переменной есть спец.символы или разделители. За счёт этого оно может оказаться заодно и медленнее. :)

А вообще, в связи с чем такой вопрос? Ты эту команду в цикле гоняешь что ли тысячами? В любом случае оставлять переменную вне двойных кавычек стоит только в очень специальных случаях, да и то не стоит. :)

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

>>если в переменной есть спец.символы или разделители.
ну это в курсе :)
я спрашиваю как будет быстрее в случае если в переменно просто одно слово

>>Ты эту команду в цикле гоняешь что ли тысячами?
что-то типа того... в бравзер отдаю данные - медленно больно получаеться. думаю как можно оптмизировать в рамках шела

>>стоит только в очень специальных случаях, да и то не стоит. :)
знаю!
интересует: быстрее или нет?

в PHP такая конструкция быстрее работает... :-/

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

Тестил так:
#!/bin/sh
aaa=1123
time echo "бооооооольшая переменная$aaa">/dev/null

$ /tmp/test
real 0m0.962s
user 0m0.864s
sys 0m0.098s

#!/bin/sh
aaa=1123
time echo 'бооооооольшая переменная'$aaa>/dev/null

$ /tmp/test
real 0m0.829s
user 0m0.740s
sys 0m0.090s

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

>>#!/bin/sh ---заменить на----> #!/usr/bin/perl
умный ты наш!
а вот теперь расскажи мне пожалуйста как впихнуть ядро + минимальную систему + perl на 2М флешки?!

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

>>В цикле гоняй.
погонял в цикле
результаты 12-15% разницы в скорости исполнения скрипта

>>оптимизируй в другом месте,
оптимизировать нежну везде где только можно! :)

тем более что это на виду и вся оптимизация сводиться к изначально оптимизированному написанию скрипта! ;)

тут 15%, там 10%, там и там еще понемножу и в результате набегат уже много! :)

Ant0
() автор топика

echo 'text'$param'text'

real    0m0.455s
user    0m0.360s
sys     0m0.088s
echo "text${param}text"

real    0m0.514s
user    0m0.380s
sys     0m0.124s
===================================================================
ТЕСТ:
===================================================================
#!/bin/sh

TMP=./tmp_$$.sh
export param="PARAM_TEST"
MAX=10000

echo "#!/bin/sh" > $TMP
i=0
while [ $i -lt $MAX ] ; do
        echo "echo 'text'\$param'text'" >> $TMP
        i=`expr $i + 1`
done
echo "echo 'text'\$param'text'"
time sh $TMP >log.1
rm -f $TMP


echo "#!/bin/sh" > $TMP
i=0
while [ $i -lt $MAX ] ; do
        echo "echo \"text\${param}text\"" >> $TMP
        i=`expr $i + 1`
done
echo "echo \"text\${param}text\""
time sh $TMP >log.2
rm -f $TMP

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

Есть способ проще. :)

sergey@athlon:~$ time sh -c "param=PARAM_TEST; for i in \`seq 1 100000\`; do echo 'text'\$param'text' ; done" >/dev/null 

real    0m1.929s
user    0m1.846s
sys     0m0.058s
sergey@athlon:~$ time sh -c "param=PARAM_TEST; for i in \`seq 1 100000\`; do echo \"text\${param}text\" ; done" >/dev/null 

real    0m2.353s
user    0m2.284s
sys     0m0.054s

Но, повторюсь, оно того не стоит совершенно.

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

>>Есть способ проще. :)
ога! примерно так и сделал

>>Но, повторюсь, оно того не стоит совершенно.
как это не стоит?
на 15% быстрее - ИМХО это внушительно!
конечно не в разы, как если бы на Сях код переписать (но на Сях писать времени больше уходит...), но все же не мелочь!

как гриться: курочка по зернышку клюет! ;)

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

Не, ну если ты полностью понимаешь, что делаешь, то я ж не против. Я просто товарищу, изобретшему хитрый скрипт, отвечал. :)

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