Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Массивы или объекты: что работает быстрее

Сообщения:  [1-10]   [11-15] 

 
 автор: Саня   (12.02.2014 в 23:20)   письмо автору
 
   для: Fix   (12.02.2014 в 22:03)
 

Почему?

  Ответить  
 
 автор: Fix   (12.02.2014 в 22:03)   письмо автору
 
   для: psychomc   (11.02.2014 в 13:22)
 

psychomc ,
данный способ не совсем корректно отображает расходование памяти.

  Ответить  
 
 автор: psychomc   (11.02.2014 в 13:22)   письмо автору
 
   для: FiX   (11.02.2014 в 12:31)
 

<?
$start_time 
microtime(true);
$start_mem memory_get_usage();

// do...

$end_time microtime(true) - $start_time;
$end_mem memory_get_usage() - $start_mem;

  Ответить  
 
 автор: FiX   (11.02.2014 в 12:31)   письмо автору
 
   для: добряк   (10.02.2014 в 22:46)
 

добряк,
спасибо за ответ! Примерно такое я и ожидал услышать. Я догадывался что использование массивов чем-то обосновано. Теперь появилась ясность... :)

Единственное - надо будет понять, сколько именно памяти выделяется изначально. Ведь потом она расширяется по мере необходимости.
Одно дело если переменное присваивается просто TRUE, а другое - текст состоящий из 5000 символов...

Надо будет самому научиться ставить эксперименты :)

  Ответить  
 
 автор: confirm   (11.02.2014 в 03:25)   письмо автору
 
   для: FiX   (10.02.2014 в 15:27)
 

Вы не можете ставить вопросы, ибо это уже ваши проблемы разработки.

  Ответить  
 
 автор: добряк   (10.02.2014 в 22:46)   письмо автору
 
   для: fix   (09.02.2014 в 20:40)
 

Я не совсем разбираюсь, но тут выпадает момент создания класса и загрузки памяти которая не нужна.
У массива вы сразу грузите память.
В классах вы РЕЗЕРВИРУЕТЕ память
Мне кажется если физические мощности одинаковы, то массивы ЧАЩЕ быстрее, хотя это мелочи и играют роль при ограниченных физических рессурсах.
Поэтому!!.
Ваши эксперименты ИСТИННЫ только в ВАШИХ физических условиях.

Нельзя ответить кто быстрей верблют, козел или лошадь, если не учитывать внешние условия.
В горном ландашафте быстре козлы....

  Ответить  
 
 автор: psychomc   (10.02.2014 в 16:23)   письмо автору
 
   для: FiX   (10.02.2014 в 15:58)
 

php 5.4 в принципе работает лучше, т.е быстрее более старых версий. почему - погуглите.
по поводу скорости массивов и объектов http://stackoverflow.com/questions/2193049/php-objects-vs-arrays
If you're using PHP5 then difference between objects or arrays almost is not significant
надеюсь, теперь понятно

  Ответить  
 
 автор: FiX   (10.02.2014 в 15:58)   письмо автору
 
   для: psychomc   (10.02.2014 в 15:52)
 

PHP 5.4+ работает лучше с объектами?)

Да, нравится делать так. Тем не менее было бы интересно узнать какое решение будет работать быстрее.

Спасибо за ответы. Может еще кто-нибудь отпишется со своими мыслями :)

  Ответить  
 
 автор: psychomc   (10.02.2014 в 15:52)   письмо автору
 
   для: Fix   (10.02.2014 в 14:41)
 

я кажется всё более-менее понятно написал...кстати, база данных используется в 99% проектов. короче, такой подход не вреден, нравится делать так - делайте. разницы скорее всего не почувствуете совсем. если хотите, чтобы производительность выросла, переходите на php 5.4 +

  Ответить  
 
 автор: FiX   (10.02.2014 в 15:27)   письмо автору
 
   для: confirm   (10.02.2014 в 14:49)
 

"В чем суть вашего вопроса -... " - в теме так и говорится "что работает быстрее".

Я же говорю. В IDE данные объектов выводятся сразу. А массив - не выводится.
Вы работаете в IDE? Если да, то наверняка пользуетесь автокомплитом при работе классами и методами.
Например, пишете
$articles = new Articles();
$articles->... //и вот тут IDE сразу выдает какие методы есть у класса.

Знакомо?

Так вот точно такой же принцип при работе, например, со статьей. Например, этот самый класс имеет метод get_articls_list.

class Articles{
publib function get_articles_list(){
$result = array();
// получили все статьи
while ($article = mysql_fetch_array()){ // пишу тупо чтобы было понятно
$article_item = new Article_item();
$article_item->name = $article['name'];
$article_item->description = $article['description'];
$article_item->text = $article['text'];
$result[] = $article_item;
}

return $result; // возвращаем массив, состоящий из объектов 

}
}

class Article_item{
public $name;
public $description;
public $text;
}



Разбираем полученный массив
foreach ($result as $article_item){
print $article_item-> // вот тут уже при написании нам выдастся автокомплит. 
}


Что это дает? То что не придется помнить все переменные и их написание. Даже если вернуться к проекту через 5-6 месяцев, не придется вспоминать какие же параметры доступны для статьи.
Повторяюсь: речь не только о данных, полученных с БД. Тут также может быть и константы (опубликовано/не опубликовано), какие-то расчеты типа "дата/время архивирования статьи", которое вычисляется в коде, и т.д.

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

Надеюсь донес свою мысль.
Скриншот с IDE скинуть пока не могу - занят процессом)) Как докачает скину если нужно.

  Ответить  

Сообщения:  [1-10]   [11-15] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования