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
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Быстродействие класса.
// Классически задаются через отдельные методы, каждый параметр проверяется на правильность, параметры сохраняются во внутренних переменных объекта.
$obj->SetA($prm_a);
$obj->SetB($prm_b);
$obj->SetC($prm_c);
// Потом обрабатываем данные на основе заданных параметров
$obj->SomeFunc($x);
// Удаляем объект
$obj->Free();
Сам скрипт обрабатывает некоторые файлы с винта, некоторые сжимает и кэширует в отдельную директорию. Сайт посещаемый, ожидаемое кол-во запросов к скрипту от 10 до 50 в секунду. Вопрос стоит в быстродействии скрипта.
Была мысль задавать все параметры внутри объекта константами, максимально уменьшив кол-во всяких проверок и методов. Пример ниже:
// Установка параметров не требуется, все параметры жестко установлены внутри объекта
$obj->SomeFunc($x);
// Удаляем объект
$obj->Free();
Как вы думаете, какова разница в скорости обработки этих вариантов? Стоит ли ухудшать качество класса ради увеличения скорости?
JustUserR
Отправлено: 24 Ноября, 2010 - 17:58:07
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Invert Рассмотрение предполагаемых вами вариантов осуществления инициализации экземпляра класса с функциональной точки зрения - приводит к оценке большей эффективности метода с использованием констант поскольку он не включает в себя расчет идентификатора и значения переменных - однако использование констант в рамках языка PHP не является простой заменой целевых вхождений символов и требует некоторых вычислительных операци для осуществления подстановки значения
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Invert
Отправлено: 24 Ноября, 2010 - 19:18:27
Частый гость
Покинул форум
Сообщений всего: 223
Дата рег-ции: Нояб. 2010
Помог: 5 раз(а)
Спасибо, но хотелось бы больше конкретики. Думаю провести небольшое тестирование и показать сюда результат, если кому-то интересно.
JustUserR
Отправлено: 25 Ноября, 2010 - 21:54:32
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Invert пишет:
Спасибо, но хотелось бы больше конкретики
Пожалуйста! Осуществление рассмотрения вопроса быстродействия в предоставленном вами примере PHP-приложения включающегшо в себя элемнты класса с инициализирующими констукрторами и константыми значениями - может не предоставлять требуемых результатов при причине использования вычсилительных ресурсов в многопоточной системе при оказания влияния множества сторонних факторов Кроме того реализация ООП-технологии в языке PHP осуществлена посредством использования механизмов пространтсв имен и ссылочных объектов - что означает обращение к парамтерам целевого объекта как неявному вызову функций контроля соответствующий информационных полей
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
OrmaJever
Отправлено: 25 Ноября, 2010 - 22:49:35
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Invert пишет:
Думаю провести небольшое тестирование
это будет сложно зделать. Потому что скрипт не может всё время выполнятся одинаковое время. А даже в очень большом класе разница вовремени будет не значительная.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
vasa_c
Отправлено: 26 Ноября, 2010 - 10:20:36
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Июнь 2009
Помог: 0 раз(а)
Как бывает в абсолютном большинстве подобных тем, вы мерите совсем не то, что нужно мерить.
Разница в выполнении конструкций языка будет совершенно ничтожна по сравнении с тем же "обрабатывает некоторые файлы с винта, некоторые сжимает и кэширует в отдельную директорию". Именно оптимизацией работы с файлами и стоит заниматься, если вообще оптимизация требуется.
Вы же пишете на PHP, а не на C, наверное выбрали его потому что он проще и удобней? Вот и в этом вопросе решайте, что удобнее, понятнее и более расширяемое.
JustUserR
Отправлено: 26 Ноября, 2010 - 14:34:16
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
vasa_c пишет:
Как бывает в абсолютном большинстве подобных тем, вы мерите совсем не то, что нужно мерить
Значение вопроса о быстродействии рассматриваемого PHP-приложения в общем случае может является достаточно существенным - в частности в случае осуществления обработки значительно числа пользовательских запросов с ресурсоемкими операциями С теоретической точки зрения в рассматриваемом PHP-приложении в качестве более эффективного варианта целесообразно рассматривать набор вложенный в класс константных полей - особенности в случае если их внутреннее представление в контексте является статическим
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
vasa_c
Отправлено: 26 Ноября, 2010 - 14:46:12
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Июнь 2009
Помог: 0 раз(а)
JustUserR, вопрос быстродействия рассматриваемого PHP-приложения, несомненно, очень существенен. Вот только это быстродействие (вернее абстрактное время выполнения конкретного сценария) складывается из множества составляющих. Но время выполнения базовых конструкций языка вносит в это совершенно ничтожный вклад, по сравнению с другими компонентами системы.
Цитата:
особенности в случае если их внутреннее представление в контексте является статическим
вот если константы лучше подходят под нужное представление и лучше соответствуют задаче, то вот поэтому их и следует использовать, а не потому что они "быстрее".
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
vasa_c пишет:
Вот если константы лучше подходят под нужное представление и лучше соответствуют задаче, то вот поэтому их и следует использовать, а не потому что они "быстрее
В общем случае реализация выбора требуемых информационных полей для хранения заданный записей в действительности обеспечивается удобством структуры для реализации текущей задачи - однако в рассматриваемом случае в силу внутренних особенностей реализации ООП-механизмов в PHP обеспечение функционирования статических констант являтеся в значительной мере более эффективным
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
vasa_c
Отправлено: 26 Ноября, 2010 - 15:02:36
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Июнь 2009
Помог: 0 раз(а)
Более эффективной по каким параметрам?
JustUserR
Отправлено: 26 Ноября, 2010 - 15:32:00
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
vasa_c пишет:
Более эффективной по каким параметрам?
В действительности реализации ООП-принципов в языке PHP осуществлена на основе использования именованных пространств имен с определение текущей таблицы объектов в операторе расширения области видимости и механизма ссылочных объектов - таким образом осуществление обращения к параметрам и методам экземпляров класса в действительности обеспечивает включение неявного вызова функции обработки которая может быть переопределена в форме __get/__set - в то время как реализация обращения к статическим полям является оригинальной операцией
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
vasa_c
Отправлено: 26 Ноября, 2010 - 15:44:16
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Июнь 2009
Помог: 0 раз(а)
Хорошо, так более эффективной по каким параметрам? По скорости?
JustUserR
Отправлено: 27 Ноября, 2010 - 12:38:08
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
vasa_c пишет:
Хорошо, так более эффективной по каким параметрам? По скорости?
Рассматриваемый вариант осуществления установки значений требуемых параметров в качесвте статических константных объектов в пространстве имен целевого класса - является более эффективным по критериям быстродействия и сложности структуры внутреннего представления PHP-приложения после осуществления выполнения фазы трансляции - поскольку обеспечению включения требуемые значений в виде статических констант не требует создание дополнительных неявных функций обработки
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
vasa_c
Отправлено: 27 Ноября, 2010 - 16:04:16
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Июнь 2009
Помог: 0 раз(а)
Лично по моему ИМХу эффективным является следующее - сервер перестал справляться с нагрузкой, мы заменили методы на константы и проблема устранилась.
Если же что-то потребляет 0,05% от общих ресурсов и мы меняем его на то, что потребляет 0,04%, это не эффективность и не оптимизация.
JustUserR
Отправлено: 27 Ноября, 2010 - 20:23:30
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
vasa_c пишет:
Если же что-то потребляет 0,05% от общих ресурсов и мы меняем его на то, что потребляет 0,04%, это не эффективность и не оптимизация
Обеспечение оптимизации и уменьшение количества потребляемых вычислительных ресурсов целевого приложения является важным критерием - дело в том что если фактическая замена предполагаемой операции предоставляет некоторый незначительный прирост - то осуществление множественного вызова функционального компонента позволяет достичь лучше эффекта - практическое рассмотрение указанного аспекта может быть осуществено при программировании NP-задач
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.