Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 8 из 64<  1 ... 5  6  7  8  9  10  11 ... 64  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Ну как как, данные перед записью в базу просто надо слешить, вот и всё. А magic_quotes надо отключить через set_ini();



Партнер
 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
Юрий писал(а):
Кстати народ, давайте перейдем к более продвинутым вопросам

Ну ты дал, кавычки это не продвинутые вопросы а RTFM реальный http://phpfaq.ru/slashes

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Хотите реально вопросы по производительности? :)))
Потестируйте разницу между ' и " кавычками :) Будете очень удивлины результатами :)


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
_Psih Не тестировал пока, но кажется что разница ОЧЕНЬ мала (по крайней мере в PHP5) и причём в пользу первых
Добавлено спустя штаны
Потестировал одно и тоже...
Добавлено спустя носки
Есть небольшой перекос в пользу одинарных, но не более 0.2%
Добавлено спустя что осталось
Перекос прыгает, то туда то сюда, одним словом одно и тоже

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
virus хм, а в 4-м PHP разница, особенно если в строку подставлять переменные - почти в 5 раз....


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
Строка типа
Код:
$i . "Vladson"

Процентов на 40-50 быстрее чем
Код:
"$iVladson"

Но к одинарным и двойным кавычкам это мало относится...
Добавлено спустя штаны
Посмотрел после твоей подписи профиль, и понял что мне надо такую-же подпись :)

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
virus писал(а):
Добавлено спустя штаны
Посмотрел после твоей подписи профиль, и понял что мне надо такую-же подпись :)

Бедный, как ты вообще на нём работаешь... ХОтя у тя есественно не WinXP точно стоит... я на XP'ке работаю...

P.S. Следующий пост будет подробный разбор полётов с ' и " кавычками, я тут поставил дома Apache с PHP4 и PHP5 и протестил :) Скрины и скрипт прилагаются :)
Добавлено спустя 6 минут, 15 секунд
и так, конфа компа в профиле.
Софт:
Windows XP SP2, с отключенными сервисами лишними.
Apache 2.0.55
PHP 4.4.1
PHP 5.0.5

Настройки PHP и Apache дефолтные.

Скрипт, которым тестил:
Код:
<?php

define('CNT', 100000);

function make_seed()
{
   list($usec, $sec) = explode(' ', microtime());
   return (float) $sec + ((float) $usec * 100000);
}

function formatTime($str)
{
    $tmp = explode(' ', $str);
    return (float)($tmp[0]+$tmp[1]);
}

function getTime($start, $end)
{
    return (float)(formatTime($end) - formatTime($start));
}

function genString()
{
  $string = null;
  for ($i = 0; $i < 32; $i++)
      $string .= chr(mt_rand(65, 90));
  return $string;
}

$str = genString();

$str_arr_num[] = genString();

$str_arr_assoc['el1'] = genString();
$content = '<table cellspacing="0" cellpadding="10" border="1">';
$t1 = microtime();
$content .= '<tr>
                 <td>Присваивание строки в \'\' кавычках переменной без вставки в неё других переменных</td>
                 <td>Присваивание строки в "" кавычках переменной без вставки в неё других переменных</td>
            </tr>
            <tr>';
for ($i = 0; $i < CNT; $i++)
{
    $string = 'This is just a random string wich I wrote for test =]';
}
$t2  = microtime();
$content.='<td align="right"><b>'.getTime($t1, $t2).'</b></td>';

$t1 = microtime();
for ($i = 0; $i < CNT; $i++)
{
    $string = "This is just a random string wich I wrote for test =]";
}
$t2  = microtime();
$content.='<td align="left"><b>'.getTime($t1, $t2).'</b></td>';

$content .= '</tr>
             <tr>
                 <td>Присваивание строки в \'\' кавычках переменной со вставкой переменной в середину строки</td>
                 <td>Присваивание строки в "" кавычках переменной со вставкой переменной в середину строки, используя механизм парсинга строк</td>
             </tr>
             <tr>';

$t1 = microtime();
for ($i = 0; $i < CNT; $i++)
{
    $string = 'This is just a random '.$str.' string wich I wrote for test =]';
}
$t2  = microtime();
$content.='<td align="right"><b>'.getTime($t1, $t2).'</b></td>';

$t1 = microtime();
for ($i = 0; $i < CNT; $i++)
{
    $string = "This is just a random $str string wich I wrote for test =]";
}
$t2  = microtime();
$content.='<td align="left"><b>'.getTime($t1, $t2).'</b></td>';

$content .= '</tr>
             <tr>
                 <td>Присваивание строки в \'\' кавычках переменной со вставкой элемента массива c цифровыми ключами в середину строки</td>
                 <td>Присваивание строки в "" кавычках переменной со вставкой элемента массива c цифровыми ключами в середину строки, используя механизм парсинга строк</td>
             </tr>
             <tr>';

$t1 = microtime();
for ($i = 0; $i < CNT; $i++)
{
    $string = 'This is just a random '.$str_arr_num[0].' string wich I wrote for test =]';
}
$t2  = microtime();
$content.='<td align="right"><b>'.getTime($t1, $t2).'</b></td>';

$t1 = microtime();
for ($i = 0; $i < CNT; $i++)
{
    $string = "This is just a random {$str_arr_num[0]} string wich I wrote for test =]";
}
$t2  = microtime();
$content.='<td align="left"><b>'.getTime($t1, $t2).'</b></td>';

$content .= '</tr>
             <tr>
                 <td>Присваивание строки в \'\' кавычках переменной со вставкой элемента массива c ассоциативными ключами в середину строки</td>
                 <td>Присваивание строки в "" кавычках переменной со вставкой элемента массива c ассоциативными ключами в середину строки, используя механизм парсинга строк</td>
             </tr>
             <tr>';

$t1 = microtime();
for ($i = 0; $i < CNT; $i++)
{
    $string = 'This is just a random '.$str_arr_assoc['el1'].' string wich I wrote for test =]';
}
$t2  = microtime();
$content.='<td align="right"><b>'.getTime($t1, $t2).'</b></td>';

$t1 = microtime();
for ($i = 0; $i < CNT; $i++)
{
    $string = "This is just a random {$str_arr_assoc['el1']} string wich I wrote for test =]";
}
$t2  = microtime();
$content.='<td align="left"><b>'.getTime($t1, $t2).'</b></td>';

$content .= '</tr></table>';

echo '<html><head><META http-equiv=Content-Type content="text/html; charset=windows-1251"></head><body>'.$content.'</body></html>';
?>


Следующий пост собственно результаты
Добавлено спустя 19 минут, 20 секунд
И так, скрипт дан выше, в коде всё легко и понятно я надеюсь. Не лучее оформление конечно, но я не задавался целью написать это красиво.
Я провёл 2 теста для каждой версии PHP - цикл в 10 000 иретаций и цикл в 100 000 иретаций. Единицы измерений - секунды.

Это результаты циклов в 10 000 иретаций:

PHP4
#77

PHP5
#77

Как видите, в обоих случаях использование ' ' кавычек даёт прирост в скорости в 3-4 раза. Кстати, чем объясняется то, что PHP5 отработал медленнее чем PHP4 - я незнаю. Возможно не в очень удачный момент запустил, у меня не сервер всётаки :) Впрочем, скорости PHP4 и PHP5 мы не сравнивали.

А теперь перейдём к тестам с 100 000 иретаций, т.к. они более наглядно показывают разницу в скорости выполнения

PHP4
#77

PHP5
#77

Картина идентична, только числа больше :)

Выводы:
Первая строка теста показала что в каких кавычках присваивать обычную строку - не важно - скорость выполнения практически не меняется, хоть ' ' кавычки и чуть быстрее. Тут решать каждому индивидуально, хотя лучше в любом случае ' ' кавычки, если вы их используете в остальных случаях, что бы стиль был одинаковый :)
Остальные 3 теста показали что превосходство ' ' кавычек над " " по скорости составляет от 3 до 4 раз.

Я вас убедил? :)))


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
_Psih писал(а):
Бедный, как ты вообще на нём работаешь...

Ну у меня помимо него ещё AthlonXP-1400Mhz и Duron-1600 :)

Меня ты не убедил ибо разница хоть и ощутимая однако реального прироста от этого не получишь.

Там где нужна экономия 0.0000001сек кавычки вовсе не нужны
(математические вычисления, рекурсивная обработка данных и.т.д.)

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

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
virus писал(а):
А так-же все эти тесты были лишними потому что по логике ясно что двойные
кавычки не просто присваиваются но и проверяются на наличие в них переменных,
так что прирост вполне логичен...

Это мы с тобой знаем это, а вот скока народу понятия не имеют про разницу между ' и " кавычками... Да, тест слегка надуманный - но более реального примера у меня нету под рукой...


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
Я бы предложил выяснить какой из вариантов получения точного времени лучше
В РНР5 достаточно сделать
Код:
$floattime = microtime(true);

А вот для РНР4 мануале были подчерпнуты давольно остроумные идеи...
Код:
$floattime = array_sum(explode(' ', microtime());

Код:
$floattime = substr($time, 11, 10) . substr($time, 1, 7);

Код:
$floattime = preg_replace('/^0?(\S+) (\S+)$/X', '$2$1', microtime());

Интересно можно ли придумать что-то ещё, и если нет то какой из этих вариантов лучше...

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Код:
<?php
function formatTime($str)
{
    $tmp = explode(' ', $str);
    return (float)($tmp[0]+$tmp[1]);
}

function getTime($start, $end)
{
    return number_format((float)(formatTime($end) - formatTime($start)), 18 ,'.','');
}

$t1 = microtime();
$floattime = array_sum(explode(' ', microtime()));
$t2 = microtime();
echo getTime($t1, $t2).'<br>';

$t1 = microtime();
$time = microtime();
$floattime = substr($time, 11, 10) . substr($time, 1, 7);
$t2 = microtime();
echo getTime($t1, $t2).'<br>';

$t1 = microtime();
$floattime = preg_replace('/^0?(\S+) (\S+)$/X', '$2$1', microtime());
$t2 = microtime();
echo getTime($t1, $t2).'<br>';
?>


С explode() в любом случае оно медленее работает, т.к. сам explode не сильно шустр.
Преги тоже не вариант - зачем так извращатся?
Так что норм вариант
Код:
$time = microtime();
$floattime = substr($time, 11, 10) . substr($time, 1, 7);

шустро и просто :)


 

Подскажите, если не трудно, в чем проблема. Есть сайт, где установлен полный набор софта. Всё работает, но потребовалась загрузка файлов от клиентов на сервер по http.
в php.ini
Код:
file_uploads = On
upload_tmp_dir = что-то
upload_max_filesize = что-то

html
Код:
<html><bodY>
<FORM ENCTYPE="multipart/form-data" ACTION="upload2.phtml" METHOD=POST>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000"><!-- макс. размер -->
Имя файла: <INPUT NAME="userfile" TYPE="file">
<INPUT TYPE="submit" VALUE="Отправить">
(нажмите кнопку <b>ОБЗОР</b>, затем <b>ОТПРАВИТЬ</b>)
</FORM>
</body></html>

php
Код:
<?
  echo "

      Вы загрузили файл размером:
      <font color=red><b>$userfile_size</b></font> байт<br><br>

      На вашем компьютере файл назывался:
      <font color=red><b>$userfile_name</b></font><br><br>

      На нашем сервере ваш файл был записан для временного храниения
      по адресу и под именем
      <font color=red><b>$userfile</b></font><br><br>

      Ниже его содержимое:<br> <font color=blue><pre>";

  // для тех, кто не знает, команда echo implode("",file("имя_файла"));
  // выводит содержимое "имя_файла" на экран

  echo implode("",file($userfile));

?>

Про настройки апача - не скажу, не спец. Так это не робит. Запрос уходит, а сервак молчит и ничего не разбирает. Может подскажете, что и где глянуть. Спасибо.
Добавлено спустя 1 час, 58 минут, 12 секунд
Вопрос снят. Админы перемудрили.


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
I_S_A писал(а):
Добавлено спустя 1 час, 58 минут, 12 секунд
Вопрос снят. Админы перемудрили.

:)


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
Чё-то ветка затухает, покритикуйте что-ли мои познания в математике :)

Код:
<?php
function sqrt_pi_counter($steps=1000) {
   $x=0;
   $z=0;
   while($x<1) {
      $y = sqrt(1 - pow($x, 2));
      $z += $y;
      $x += 1/$steps;
   }
   return $z/$steps*4;
}

header('Content-type: text/plain');
echo sqrt_pi_counter(1000000);
?>

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


Последний раз редактировалось virus 28.11.2005 13:08, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
virus писал(а):
Чё-то ветка затухает, покритикуйте что-ли мои познания в математике :)

Код:
<?php
function sqrt_pi_counter($steps=1000) {
   $x=0;
   $z=0;
   while($x<1) {
      $y = sqrt(1 - pow($x, 2));
      $z += $y;
      $x += 1/$steps;
   }
   return $z/$steps*4;
}

header('Content-type: text/plain');
echo pi_counter(1000);
?>

Ты хоть бы описал что она делает... А то я конечно не дурак, но и не мозг в матеиатике :)
Добавлено спустя 20 минут, 32 секунды
Кстати, вышел PHP 5.1
С момента выхода PHP 5, этот релиз ещё одна очень значимая ступень в развитии PHP, т.к. он обладает очень повышенной скоростью работы, по предварительным тестам, что я отрыл в интернете, почти в 2.5 раза. Что-ж, как доберусь до него, сделаю небольшой обзор и тесты.

Перевод с http://www.opennet.ru/opennews/art.shtml?num=6495
Цитата:
Вышел первый официальный релиз PHP 5.1. Пользователям PHP 5.0 рекомендуется срочно обновиться, так как в PHP 5.1 исправлен ряд серьезных ошибок связанных с безопасностью.

Из новых возможностей можно отметить:

Полностью переписан код работы с датами и временем.
Проведена значительная оптимизация производительности, скорость некоторых операций, по сравнению с 4.4 и 5.0, увеличилась почти в 4 раза !
PDO (PHP Data Objects) расширение теперь активно по умолчанию;
Около 30 новых функций;
Библиотеки PCRE и SQLite обновлены до последний версий;
Исправлено около 400 ошибок;
PEAR обновлен до версии 1.4.5.

Так же важная информация по миграции на PHP 5.1.0 с любой более ранней версии PHP, включая беты и релиз кандидаты PHP 5.1.0 : http://www.php.net/README_UPGRADE_51.php


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
Ставил я себе, рано ещё на него переходить, думаю что к версии 5.1.9 исправят ещё много критических недоработок (перечислять не буду, всё это есть уже на сайте php.net)

А функция моя считает число PI с помощью одного из самых примитивных способов (на спектруме аналог этого скрипта пол часа рожает) :)

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
virus писал(а):
Ставил я себе, рано ещё на него переходить, думаю что к версии 5.1.9 исправят ещё много критических недоработок (перечислять не буду, всё это есть уже на сайте php.net)

А функция моя считает число PI с помощью одного из самых примитивных способов (на спектруме аналог этого скрипта пол часа рожает) :)

А зачем тебе оно? Просто так, тренировка? На самом деле тебе тот-же результат выдаст функция pi() или константа M_PI, с такой же точностью, т.к. точность чисел определяется дерективой precision в php.ini :)
P.S. считает кстати не совсем правильно. Это из мана по PHP: 3.1415926535898, а это то, что из твоего скрипта получилось: 3.143555466911
P.S.S. Подправь свой скриптик, а то у тебя объявлена функция sqrt_pi_counter(), а вызывается pi_counter() ;)


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
_Psih писал(а):
А зачем тебе оно?

Дешёвая замена онанизма.
_Psih писал(а):
считает кстати не совсем правильно

Дык она считает не просто приблизителтно а очень (точность зависит от входного параметра) и чтоб посчитать 3,141592653589 этому скрипту надо несколько дней....

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
virus писал(а):
_Psih писал(а):
считает кстати не совсем правильно

Дык она считает не просто приблизителтно а очень (точность зависит от входного параметра) и чтоб посчитать 3,141592653589 этому скрипту надо несколько дней....

:lol: Моя умилённо плакатЪ :)

Ну если от нефиг делать... тады мона :) Но я бы лучше погулять пошёл :)


 

Junior
Статус: Не в сети
Регистрация: 19.12.2003
Откуда: Belarus, Minsk
I_S_A
http://flasher.ru/forum/showthread.php?t=72253
Учись писать правильный код, т.е. register globals - off и теги <?php ?>.
И вообще у тебя в примере полный бред.

_________________
nVidia - the worldwide leader in visual processing solutions.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 8 из 64<  1 ... 5  6  7  8  9  10  11 ... 64  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan