Проверка массива на наличие данных.

Pack

Новичок
Проверка массива на наличие данных.

Доброй ночи. У меня тут такой вопрос возник. Есть ли возможность проверить массив на наличие в нём данных какой-нибудь однуй функцией? То есть у меня создаётся массив, но он изначально пустой, и его дальше надо проверить на наличие данных. Что-то в голову ничего не приходит... Подскажите, пожалуйста, если кто знает.
 

zerkms

TDD infected
Команда форума
WP
так, для интереса, пробовал свою ссылку сам читать? :)
 

WP

^_^
zerkms
Так, для интереса, сделай бенчмарк count и sizeof, а затем покайся.
 

zerkms

TDD infected
Команда форума
WP
PHP:
$array = range(0, 50);

$start = microtime(true);
for ($i = 0; $i <= 100000; $i++) {
    sizeof($array);
}

echo (microtime(true) - $start) . '<br />';

$start = microtime(true);
for ($i = 0; $i <= 100000; $i++) {
    count($array);
}

echo (microtime(true) - $start) . '<br />';
м?
 

zerkms

TDD infected
Команда форума
WP
покажи "правильный" бенчмарк (с тиками?), который твои слова подтвердит
 

Ярослав

Новичок
Автор оригинала: WP
zerkms
Смеялся. (над microtime)
По-моему zerkms сделал нормальньій бенчмарк. Мне непонятно почему microtime не устроил?
Примерно одинаково

PHP:
Count :: 1.80680894852
SizeOf :: 1.75221204758
PHP:
Count :: 1.77820110321
SizeOf :: 1.78794908524
 

WP

^_^
Погрешность большая. Тестирование показывает что sizeof быстрее, об этом даже статьи писали.
 

dr-sm

Новичок
ужасно то, что результаты ни count ни sizeof не кешируются, когда делаешь вот так:
PHP:
for ($i = 0; $i < sizeof($arr); ++$i) {
 

zerkms

TDD infected
Команда форума
Погрешность большая. Тестирование показывает что sizeof быстрее, об этом даже статьи писали.
ты покажешь тест, ну или хотя бы в сорсах покажешь - почему хотя бы теоретически sizeof может быть быстрее?
 

Sluggard

Новичок
Тестирование показывает что sizeof быстрее, об этом даже статьи писали.
ты об этой?
Оптимизация программ на PHP
Ну не надо прям вот так, наивно, сразу всему верить. :) Своя голова на плечах тоже должна быть. ;)
ужасно то, что результаты ни count ни sizeof не кешируются, когда делаешь вот так:
for ($i = 0; $i < sizeof($arr); ++$i)
Ужасно? Ну это смотря в какую сторону крутить. :) Дают же возможность и так делать:
PHP:
for ($i = 0, $ci = sizeof($arr); $i < $ci; ++$i)
 

vonica

Новичок
В мануале php написано что sizeof это алиас count, а посему скорость у них должна быть равна, так как один оператор - два разных названия
 

Alexandre

PHPПенсионер
ты об этой?
Оптимизация программ на PHP
Дима Бородин написал:
Если кол-во элементов в массиве меньше 65000 (64К), то эти функции по скорости практически не различимы. так что не будем размениваться на копейки.

-~{}~ 14.03.08 18:25:

В мануале php написано что sizeof это алиас count, а посему скорость у них должна быть равна
vonica статью прочитай.
 

FractalizeR

Новичок
http://php.spb.ru/php/speed.html
Сама статья уже достаточно старая и мне кажется, как минимум кекоторые упомянутые в ней моменты уже потеряли актуальность. Скажем, если говорить о влиянии длины имени переменной на производительность, на PHP 5.2.5 у меня на моих тестах (в родном коде, eval не использовался) получилось следующее (три миллиона итераций):

Код:
Fractal_LongVarNames:

 Total: 5.280; Min: 0.475;  Max: 0.484;  Avg: 0.480;
 - 4 chars:  0.478 (100%)
 - 6 chars:  0.482 (101%)
 - 8 chars:  0.477 (100%)
 - 10 chars: 0.480 (100%)
 - 14 chars: 0.482 (101%)
 - 2 chars:  0.484 (101%)
 - 20 chars: 0.475 (100%)
 - 24 chars: 0.478 (100%)
 - 28 chars: 0.483 (101%)
 - 32 chars: 0.481 (101%)
Сам код для тестирования представлял собой следующее:
PHP:
		for($i = 0; $i < 3000000; $i ++) {
			$x2 = 1;
		}

		for($i = 0; $i < 3000000; $i ++) {
			$x004 = 1;
		}
и так далее.
 

Sluggard

Новичок
Alexandre
Мне кажется у нас недопонимание. Перефразирую свои слова:
Диму Бородина почитай, но свою голову на плечах все же имей.
 
Сверху