Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Строковые операции и вывод

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Оптимизация и дискуссии
Uchenik
Отправлено: 09 Февраля, 2012 - 12:31:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Выделено в отдельную тему из темы "Помогите дополнить код"
Мелкий
спор немного затянулся, Вам так не кажется?
Кстати Топ вообще не об этом =)
Ладно, в этой части признаю свою ошибку, под давлением улик =)
Но вот в остальном меня ещё никто не переубедил.
Или Вы и на эту тему хотите поспорить?
На сколько правильно писать
PHP:
скопировать код в буфер обмена
  1.  header("WWW-Authenticate: Basic realm=\"Administration\"");

вместо
PHP:
скопировать код в буфер обмена
  1. header('WWW-Authenticate: Basic realm="Administration"');

Лично мне экранирование глаза режет, а Вам? По-моему вообще изучение PHP нужно начинать с понимания разницы между кавычками и апострофами

(Отредактировано автором: 09 Февраля, 2012 - 12:33:23)

 
 Top
Мелкий Супермодератор
Отправлено: 09 Февраля, 2012 - 13:02:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Выделено в отдельную тему из темы "Помогите дополнить код"
Uchenik пишет:
Или Вы и на эту тему хотите поспорить?

Можно и подискутировать, если хотите Подмигивание

Uchenik пишет:
На сколько правильно писать

Не имеет значения.

Uchenik пишет:
Лично мне экранирование глаза режет, а Вам?

Да, пожалуй. Однако, HTTP допускает и одиночные кавычки, на сколько помню.

Uchenik пишет:
Двойные кавычки " используются только в случае если между ними находится переменная.

А так же:
спецсимволы, \r\n очень часто используются всё же
16-ричные представления
просто другие кавычки, чтобы не плодить экранирование
Падением производительности же запросто можно пренебречь, т.к. оно мало и уж наверняка не это является бутылочным горлышком. На echo затык чаще встречается.

Итого - достаточно просто помнить о особенности интерпретации разных типов записи строк.


-----
PostgreSQL DBA
 
 Top
Uchenik
Отправлено: 09 Февраля, 2012 - 13:08:13
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Выделено в отдельную тему из темы "Помогите дополнить код"
Оно мало и незаметно, в случае если это пара строк,или даже пара десятков строк, а если несколько сотен или даже несколько тысяч строк кода, в которых везде стоят неправильные кавычки и куча экранов, работать будет определённо медленнее чем валидный код, не говоря уже о том что его читать неудобно =)

(Отредактировано автором: 09 Февраля, 2012 - 13:08:53)

 
 Top
Мелкий Супермодератор
Отправлено: 09 Февраля, 2012 - 13:43:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Выделено в отдельную тему из темы "Помогите дополнить код"
Uchenik, о да, целых 0.1с на 100млн строковых операциях.
Но действительно использование переменных в строке увеличивает время её обработки. На тех же самых 100млн операций насчитал 24с с конкатенацией (при том, без разницы, была строка в одиночных или двойных кавычках) и 30 - с переменной в строке.
На 2.5с просели от использования спецсимволов.

PS: php5.3.5


-----
PostgreSQL DBA
 
 Top
Uchenik
Отправлено: 09 Февраля, 2012 - 13:51:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Выделено в отдельную тему из темы "Помогите дополнить код"
ЧТД =)
(Добавление)
Спойлер (Отобразить)
 
 Top
Мелкий Супермодератор
Отправлено: 09 Февраля, 2012 - 14:16:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Выделено в отдельную тему из темы "Помогите дополнить код"
Чего и Требовалось Добиться - другое. Использовать надо то, что нужно. Язычок

Спойлер (Отобразить)


-----
PostgreSQL DBA
 
 Top
Uchenik
Отправлено: 09 Февраля, 2012 - 14:20:06
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Выделено в отдельную тему из темы "Помогите дополнить код"
Не нужно плодить бредокодеров, которые будут забивать код экранами, потому-что им лень понять разницу между кавычками и апострофами =)
(Добавление)

Спойлер (Отобразить)
 
 Top
snikers987
Отправлено: 09 Февраля, 2012 - 14:30:53
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




Выделено в отдельную тему из темы "Помогите дополнить код"
Цитата:
росто другие кавычки, чтобы не плодить экранирование

А управляющие конструкции типа:
PHP:
скопировать код в буфер обмена
  1.  
  2. $sMes = 'world';
  3. $sStr = "Привет {$sMes}!";

?
По моим тестам иногда интерпритатор отрабатывает их быстрее даже чем конкатенацию с апострофами.

(Отредактировано автором: 09 Февраля, 2012 - 14:43:10)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Мелкий Супермодератор
Отправлено: 09 Февраля, 2012 - 14:39:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Выделено в отдельную тему из темы "Помогите дополнить код"
О, про этот вариант я забыл.
Заметной разницы не нашёл: "foo$s", "foo{$s}", "foo${s}"


-----
PostgreSQL DBA
 
 Top
Uchenik
Отправлено: 09 Февраля, 2012 - 14:46:58
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Выделено в отдельную тему из темы "Помогите дополнить код"
ОК! Давайте тогда вместо
везде писать
PHP:
скопировать код в буфер обмена
  1. $world='world'; echo "HELLO {$world}";
БРЕД! Зачем загружать код лишними действиями.
Или вообще, давайте уже для полного счастья добавим экранирование.

snikers987 где логика? И вообще мне начинает казаться что Вы просто нашли новую тему чтобы тупо поспорить, не важно о чём, не важно зачем и кому это нужно, важен сам факт спора!
Делаете вид что спорите по делу, а на самом деле тупо накручиваете счетчик сообщений.
Это даже заметно по Вашему КПД, из почти 800 сообщений, только 9 полезных. Реальное достижение, учитесь у таких как Eugen. Он не болтает просто так, он всегда говорит четко, коротко и по делу.

(Отредактировано автором: 09 Февраля, 2012 - 14:48:02)

 
 Top
EuGen Администратор
Отправлено: 09 Февраля, 2012 - 14:52:33
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Выделено из темы, не имеющей к этому отношения


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
snikers987
Отправлено: 09 Февраля, 2012 - 15:11:36
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?
  2.    $str  =  'world';
  3. $s  =  microtime(true);
  4. for($i = 0; $i<1000000; $i++){
  5.     $c  =  "Hello {$str}";
  6. }
  7. echo microtime(true)-$s;
  8. echo '<br>';
  9. $s  =  microtime(true);
  10. for($i = 0; $i<1000000; $i++){
  11.     $c  =  "Hello $str";
  12. }
  13. echo microtime(true)-$s;
  14. echo '<br>';
  15. $s  =  microtime(true);
  16. for($i = 0; $i<1000000; $i++){
  17.     $c  =  'Hello '.$str;
  18. }
  19. echo microtime(true)-$s;


http://privatbank24[dot]info/test02/strtest.php
Но результаты не однозначные..
Но разница не значительная..

update
Цитата:

БРЕД! Зачем загружать код лишними действиями.
Или вообще, давайте уже для полного счастья добавим экранирование.

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

(Отредактировано автором: 09 Февраля, 2012 - 15:23:13)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Uchenik
Отправлено: 10 Февраля, 2012 - 07:02:36
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Я уже решил свою проблему, но как писалось в моей теме, моё решение не столь элегантное как хотелось бы, но зато полностью соответствует моим требованиям к коду:
1. Никаких echo или ptint в коде.
2. Никакого смешивания с HTML
3. Управляемость и изменяемость без вмешательства в код.
4. Зависимость модулей проекта друг от друга, но при этом если 1 модуль упал, проект должен продолжать работу.

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

(Отредактировано автором: 10 Февраля, 2012 - 07:34:34)

 
 Top
Мелкий Супермодератор
Отправлено: 05 Апреля, 2012 - 15:46:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




И внезапно ещё о разнице скорости переменных в кавычках и конкатенации:
http://habrahabr[dot]ru/post/141290/#comment_4727402

Уже на 4 переменных разница в пределах погрешности, а дальше - конкатенация обходится дороже, чем поиск переменных в строке.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 05 Апреля, 2012 - 15:48:29
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




The PHP Benchmark пишет:
In reality the echo and print functions serve the exact purpose and therefore in the backend the exact same code applies. The one small thing to notice is that when using a comma to separate items whilst using the echo function, items run slightly faster.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB