Замедляет ли создание большого класса на странице?

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

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

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

ОТРЕДАКТИРОВАНО

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

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

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

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


person Ben Carey    schedule 18.01.2012    source источник
comment
класс 3000 LOCs больше похож на недостаток конструкции, чем на проблему с производительностью ...   -  person KingCrunch    schedule 18.01.2012
comment
Короче говоря, да, это замедлит его, потому что ему придется инициализировать этот класс. Хотя, наверное, это не так плохо, как вы думаете. Похоже, вы можете посмотреть на этот связанный вопрос: stackoverflow.com/questions/1424382/   -  person tjarratt    schedule 18.01.2012
comment
Краткий ответ: Да. Длинный ответ: существует бесконечное множество факторов, которые замедляют страницу. То, что вы теряете в 3000 строк кода, можно компенсировать в другом месте.   -  person Jason McCreary    schedule 18.01.2012
comment
что делает класс? и зачем создавать экземпляр на каждой странице?   -  person jere    schedule 18.01.2012
comment
3000 строк кода? Вам нужно провести рефакторинг, потому что вы определенно делаете что-то не так.   -  person Kenaniah    schedule 18.01.2012
comment
Почему бы вам не разбить его на более мелкие части? выньте общие функции и создайте новый класс. Наследование поможет, если они зависят. Поскольку вы используете только пару методов, будет лучше, если вы внимательно посмотрите на него и перепроектируете свой класс.   -  person Bhrugesh Patel    schedule 18.01.2012
comment
Даже если вы попытаетесь объяснить: 2300 LOC для одного класса слишком много.   -  person KingCrunch    schedule 18.01.2012
comment
Ну, этот класс состоит из более чем 5000 строк, вы говорите мне, что можете добиться того же менее чем за 1000? Класс загрузки   -  person Ben Carey    schedule 18.01.2012


Ответы (3)


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

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

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

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

person Frank Farmer    schedule 18.01.2012
comment
для первой части, это зависит от того, нужны ли ему 3k строк и рассмотрите возможность разделения их на несколько классов, он в конечном итоге загрузит их все один за другим, что замедлит его работу. - person Charles Forest; 18.01.2012
comment
Да, включение десяти 300-строчных файлов (немного) медленнее, чем включение одного 3000-строчного файла. Опять же, фактическая разница во времени стены, вероятно, довольно тривиальна. - person Frank Farmer; 18.01.2012
comment
Но с автозагрузкой может не быть необходимости загружать каждый подкласс для каждого запроса, и это тоже хорошее оправдание для использования APC - person Mark Baker; 18.01.2012

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

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

person K. Norbert    schedule 18.01.2012

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

единственная проблема в том, что это часто приводит к большому блоку кода, а модификации сделать сложнее.

РЕДАКТИРОВАТЬ: будет быстрее, если все строки будут полезны. если у вас много старого кода, вы можете подумать о очистке

person Charles Forest    schedule 18.01.2012