Тесты на знания php

grigori

( ͡° ͜ʖ ͡°)
Команда форума
флоппик
тут в правилах есть пункт, в котором сказано, что пустой флейм не приветствуется
если это шутка - извини, не понял
 

Krishna

Продался Java
grigori
говносайтер на потоке (bitrix/umi/joomla), hi-load (администрирование/профайлинг), сетевые приложения (cURL, сокеты), etc ...
...+ разработчик интранет приложений со сложной бизнес логикой ^_^ \m/ :D
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
кстати, такую классификацию стоило бы составить и просить указывать в вакансии ;)
 

Baranov_Dron

Новичок
Автор оригинала: nerezus
инпхп?
судя по описанию- да. Сделано прикольно, кстати, очень даже. Но вопросы идиотские:
Какой код медленнее?
1) $s = a['one'];
2) $s = a["one"];
3) $s = a[one];
Блин, какой из этих вариантов выбрать?
Я даже не знаю, как тест составить...
Результаты как правило, что все эти три конструкции работают практически с одинаковой скоростью...

PHP:
<?php
set_time_limit(0);

$Arr = array();
$Arr['one'] = file_get_contents('1.txt');

//test1
$time_start = microtime(1);
for ($i=1; $i < 10000; $i++)
{
    $a = '';
    $a = $Arr['one'];
}
echo 'test1-'.(microtime(1) - $time_start).'ms<br>';

//test2
$time_start = microtime(1);
for ($i=1; $i < 10000; $i++)
{
    $a = '';
    $a = $Arr["one"];
}
echo 'test2-'.(microtime(1) - $time_start).'ms<br>';

//test2
$time_start = microtime(1);
for ($i=1; $i < 10000; $i++)
{
    $a = '';
    $a = $Arr[one];
}
echo 'test3-'.(microtime(1) - $time_start).'ms';
?>
Результаты практически одинаковы... При весе 1.txt пол метра.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Baranov_Dron
скорость работы оператора присваивания не зависит от размера данных
 

AmdY

Пью пиво
Команда форума
вот а такой оптимизации я и говорил, человек даже тест разработал, хотя нужно всего лишь чуток знаний и никаких тестов, так как ответ на поверхности.
 

Angerslave

Новичок
AmdY
А какой ответ? "Идите на*** с такими вопросами"? Жаль, среди вариантов нет такого :)
 

nerezus

Вселенский отказник
Гг, у них даже движок глючный: требует тест 6 пройти для теста 7, но 6 пройден...

-~{}~ 23.11.08 19:13:

AmdY и что, неужели "" быстрее, чем ''?
Естественно интересует только практическая сторона, т.к. специфика вопроса практическая.
 

AmdY

Пью пиво
Команда форума
вот ответ
http://www.php.net/manual/ru/language.types.string.php#language.types.string.parsing
вопроса в том, что _должно_ работать быстрее возникать не должно, а в результате подобного теста результат может быть и обратным. во время выполнения лабораторны работ в универсетете все плохие результаты, мы списывали на неидеальность условий проведения опыта.
 

Beavis

Banned
AmdY
я щас проверил - одинарные кавычки обрабатываются столько же сколько и двойные..
разница во времени обработки '' и "" не больше разницы во времени обработки "" и "", т.е. не больше погрешности...

так что как это _должно_ быть в теории - неважно, т.к. на практике разницы нет

-~{}~ 23.11.08 20:01:

а насчет $a[one] тут разница огромная...

PHP:
<?php
$a = array("one" => 1);

$time1 = microtime(TRUE);
for ($i = 0; $i < 100000; ++$i)	$a['one'];
$time2 = microtime(TRUE);
echo $time2 - $time1;
echo "\n";

$time1 = microtime(TRUE);
for ($i = 0; $i < 100000; ++$i) $a["one"];
$time2 = microtime(TRUE);
echo $time2 - $time1;
echo "\n";

$time1 = microtime(TRUE);
for ($i = 0; $i < 100000; ++$i) $a[one];
$time2 = microtime(TRUE);
echo $time2 - $time1;
echo "\n";
?>
0.84760689735413
0.84217715263367
13.176268815994
 

pilot911

Новичок
читал на пхп.нет, что конструкция $Arr[one]; недопустима, поскольку сначала идет поиск в дефайнах, потом преобразование ключа в строку
 

Crys

Двинутый новичок
читал на пхп.нет, что конструкция $Arr[one]; недопустима
Да допустима эта конструкция.. иначе валились бы фатальные ошибки.. она просто не рекомендуется.

Имхо, в php надо убрать все эти "рабочие недопустимости" и сделать более строгий синтаксис, при котором шаг влево и вправо - расстрел, изнасилование и повешение. Не определена константа или переменная, но вызывается? Фатал еррор и никаких разговоров. В итоге и качество скриптов улучшится и меньше глупых тестов будет.
 

ustas

Элекомист №1
и признак грязных данных.

-~{}~ 23.11.08 21:51:

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

waldicom

Новичок
Почитал мнения, многим не нравятся тесты.
Но вопрос у меня остался.
следующий вопрос из теста:


1.
$a = '';
foreach ($Arr as $Str) {
$a .= $Str;
}
echo $a;

2:
foreach ($Arr as $Str) {
echo $Str;
}

3:
echo implode ('', $Arr);

Вопрос то ли что быстрее выведется, то ли что медленнее.
Прогоняю тесты локально, implode выполняется 57 секунд против примерно 2-х секунд для 1-го и 2-го вариантов.
Выполняю на сервере:
1: 2.152589 sec
2: 0.070076 sec
3: 1.942171 sec
соответственно.

Хотелось бы узнать:
1. почему могут быть такие расхождения при тестировании на обычном компе и на сервере
2. И что правильнее.

Я думал, что первый вариант самый быстрый, так как вывод там производится только после цикла, а операции вывода вроде-как самый длинные. Но видимо я ошибался. Хотел бы знать почему.
 

HraKK

Мудак
Команда форума
Baranov_Dron
ваш тест гениален в своей дебильности. Имхо у вас Очень большие проблемы с элементарной логикой и базовыми понятиями.

-~{}~ 03.12.08 18:36:

waldicom
потому что в первом случае идет конкатенация строки, а во втором тупой вывод который кешируеться и отдается после завершения скрипта.
 

Angerslave

Новичок
HraKK
> кешируеться
Что "тупее" - кеширование вывода или конкатенация строк это ещё посмотреть надо.
А вообще, в тесте waldicom видимо закралась где-то ошибочка. Или настройки сервером настолько сильно разняться. Но вообще 2 секунды на скрипт, имхо, многовато.
 
Сверху