2012-01-18 10 views
8

Я нахожусь в процессе написания класса, который, вероятно, окажется около 3000 строк кода.Действительно ли инициирование большого класса на странице замедляет его?

Что я хотел бы знать, очень просто, инициирует этот класс в верхней части каждой страницы, замедляя время выполнения страницы, хотя будет использоваться только один/два метода объектов? Будет ли у меня больше нагрузки на мой сервер, если к нему обращаются несколько тысяч раз в день?

Если да, то следует ли мне искать создание расширений для обработки каждого метода вместо того, чтобы весь класс был в одном файле?

EDITED

Во-первых, просто исправить KingCrunch и Kenaniah, этот класс для моего API, который Resultantly означает, что он имеет много функций для извлечения данных, которые будут отображаться на веб-сайте и наш iPhone Application , а также наше приложение для Facebook. Так что 3000 строк довольно чертовски малы, учитывая размер и возможности нашего сайта, не говоря уже о том, что более 700 из этих строк являются комментариями. Поэтому я могу заверить, что нет недостатка в дизайне, хотя может возникнуть структурный недостаток, поэтому я задаю этот вопрос ...

Функция construct просто устанавливает значения по умолчанию для определенных переменных, не более того.

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

Я отслеживаю использование моего сервера и т. Д., А также имитирую большие объемы трафика с помощью apache ab tool, и хотя мое использование памяти увеличивается, похоже, все в порядке.

+3

3000 LOCs-класс звучит скорее как дефект дизайна, чем проблема с производительностью ... – KingCrunch

+0

Короче говоря, да, это замедлит его, потому что это будет должны инициализировать этот класс. Вероятно, это не так плохо, как вы думаете. Похоже, вы можете посмотреть на этот вопрос: http://stackoverflow.com/questions/1424382/one-compressed-file-of-classes-vs-multiple-class-files-in-php – tjarratt

+2

Короткий ответ: * Да*. Длинный ответ: существует бесконечный набор факторов, которые * замедляют * страницу. То, что вы * потеряете * в 3000 строк кода, может быть составлено в другом месте. –

ответ

4

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

Будет ли добавить в среду исполнения? Да. Конечно. Ничто не является бесплатным. Каждая строка кода анализируется с небольшими накладными расходами (однако вы можете избавиться от большей части этой стоимости с помощью кэша операций операций, такого как APC). Тем не менее, мы говорим о субмиллисекундных накладных расходах, возможно. Единственный способ быть уверенным в том, чтобы профилировать его самостоятельно.

Будет ли это накладывать больше нагрузки на мой сервер, если к нему обращаются несколько тысяч раз в день?

Из личного опыта, нет. Но опять же, профиль и измерить себя. Вы должны отслеживать основные показатели производительности на вашем сервере (использование ЦП, средняя загрузка и т. Д.). Разверните свои изменения и посмотрите свои показатели.

+0

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

+0

Да, в том числе десять 300 строк файлов (бит) медленнее, чем один 3000 файлов. Опять же, реальная разница во времени стены, вероятно, довольно тривиальна. –

+1

Но при автозагрузке может быть необязательно загружать каждый «подкласс» для каждого запроса, и это также является хорошим оправданием для использования APC –

1

Нет, создавая экземпляр класса, состоящего из большого количества LOC, автоматически не замедляет работу.

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

1

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

Единственная проблема заключается в том, что часто возникает большой блок кода, и его сложнее выполнить.

EDIT: он будет быстрее, если все линии полезны.если у вас много старого кода, вы можете рассмотреть очистку

Смежные вопросы