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
Форумы портала PHP.SU :: Версия для печати :: Как же так?
Форумы портала PHP.SU » » Операционная система и системные вызовы » Как же так?

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

1. dubasua - 29 Ноября, 2012 - 20:36:56 - перейти к сообщению
Всем доброго времени суток.
Написал я скрипт на php. Все работает все классно, душа радуется, времени еще 1,5 дня до сдачи проекта, вот думаю оптимизирую немного. В самое начало скрипта вставил две строки

И в самый конец скрипта тоже вставил
PHP:
скопировать код в буфер обмена
  1.  
  2. $total_time = microtime() - $start_time;
  3. $total_memory = memory_get_usage() - $start_memory_usage;
  4. $$total_memory = $total_memory / 1024;
  5.  
  6. echo "</br>Время - $total_time секунды</br>";
  7. echo "Память -$total_memory kb </br>";
  8.  


Все нормально, записал данные времени, и используемой памятью. Приступил к оптимизации, прошелся по всему скрипту, кое-что поправил. кое что изменил. После оптимизации сверил данные до и после оптимизации, в итоге время выполнения скрипта почти не изменилось, а вот память на 13 kb уменьшалась. Круто, подумал я, и скинул скрипт на удаленный хостинг. И после того, как я увидел там цифры по выполнению скрипта, я немного выпал в осадок. Короче время не изменилось, а вот используемая память на хостинге ест в 2,7 раза больше. Как так??? Один и тот же скрипт съедает разное количество памяти на разных серверах??? На локальном у меня стоит apache 2.2, на хосте тоже. В чем прикол?
2. esterio - 29 Ноября, 2012 - 20:53:27 - перейти к сообщению
Гггг подобная фича, только с phpQuery
на локалке отлично находить елемент, а на хосте ну никак, хотя там ПХП поновее, но не сильно
3. dubasua - 29 Ноября, 2012 - 20:57:02 - перейти к сообщению
пхп у меня поновее будет. Запросов к бд нет. Есть несколько include
4. esterio - 29 Ноября, 2012 - 21:04:39 - перейти к сообщению
Думаю все дело в архитектуре ОС. Могу ошыбатся, но если локалка у вас на винде то там стопудов NTFS, а хост на линуксе, а там файловоя система ext3 или какая-то там. Вот в линуксе на каждый файл разние права, думаю и скорость чтения больше. Ето только предположения. Могу ошыбатся

И еще одно припущения, скорость исполнения может зависеть от загружености системы. Может тут кроется тайна

П.С. не пинайте сильно, так-как я не бородатый сисадмин, и плохо разбираюсь в ФС
5. dubasua - 29 Ноября, 2012 - 21:12:46 - перейти к сообщению
esterio пишет:
скорость исполнения может зависеть от загружености системы

Вот скорость как раз одинаковая там и там. А на локалке у меня линь стоит. Файловая система ReiserFs. Правда какая на хостинге не скажу.
6. Мелкий - 29 Ноября, 2012 - 21:15:14 - перейти к сообщению
Надо больше данных. Версии PHP, ОС, х86-32 или х86-64 архитектура.
7. esterio - 29 Ноября, 2012 - 21:16:05 - перейти к сообщению
Ну тогда честно не знаю, а сколько раз пробовали тесты?
8. dubasua - 29 Ноября, 2012 - 21:24:31 - перейти к сообщению
У меня стоит убунта 32-битная.
PHP 5,3 таи и там, у меня только на несколько мажоров больше. так как у меня скоробки чуть ли не каждый день обновление презжает.
хост сидит на x64, а ось не скажу.
(Добавление)
esterio пишет:
а сколько раз пробовали тесты?

Да только то и делаю что страницу обновляю...
9. Мелкий - 29 Ноября, 2012 - 22:36:40 - перейти к сообщению
dubasua пишет:
хост сидит на x64

Ну вот тут двухкратную разницу словить вполне можно. Мне во всяком случае удалось, в консоли в равных версиях PHP
10. dubasua - 29 Ноября, 2012 - 22:54:49 - перейти к сообщению
Так это что? x32 в два раза продуктивней будет? Или я не правильно понял?
11. vanicon - 30 Ноября, 2012 - 00:19:08 - перейти к сообщению
Цитата:
Так это что? x32 в два раза продуктивней будет? Или я не правильно понял?

По идее x64 должна быть продуктивней, но вот памяти жрет больше, так как там в 2 раза больше длина указателей.
Но насколько я знаю, то производительность x64 зависит от кол-во ram yf сервере, если <= 4 г то разница вряд ли будет...
12. dubasua - 30 Ноября, 2012 - 01:13:53 - перейти к сообщению
Мне вот сейчас делать нечего, я сижу и играюсь. Например, я знаю два способа удаления переменной
PHP:
скопировать код в буфер обмена
  1.  
  2. unset($var);    //Первый способ
  3. $var = NULL;    //Второй способ
  4.  

А вы знали что второй способ обходится дороже на 166 байт? Или empty($var) дешевле чем $var == ''. Интересные вещи.
(Добавление)
Все равно. вопрос остался не решенным.
13. DlTA - 30 Ноября, 2012 - 02:34:26 - перейти к сообщению
dubasua, а сколько памяти используете?
возможно вся загвоздка как раз в том и состоит что у вас куча переменных, но данных в них очень мало, что как выше и сказали вылазит в большое выделение памяти на указатели,
(Добавление)
dubasua пишет:
$$total_memory
а что это у вас за переменная такая интересная?
14. dubasua - 30 Ноября, 2012 - 03:25:46 - перейти к сообщению
Да это я выложил с ошибкой, там все путем.
DlTA пишет:
возможно вся загвоздка как раз в том и состоит что у вас куча переменных, но данных в них очень мало

Даже если это и так, все равно разница сильно большая. на локальном у меня все это дело занимает 32 кб, а на удаленке 84 кб.
15. EuGen - 30 Ноября, 2012 - 08:07:34 - перейти к сообщению
dubasua пишет:
unset($var); //Первый способ
$var = NULL; //Второй способ

Разумеется, второй способ "дороже", ведь Вы не уничтожаете переменную полностью. Во втором случае переменная остается на месте (в таблице имен), вот только значение у нее будет NULL. В данном случае некорректно
dubasua пишет:
дороже на 166 байт?

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

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

 

Powered by ExBB FM 1.0 RC1