1

Я использую класс «Requests Buffer» как @property моего основного класса модели. Существует ленивый экземпляр для буфера, и когда в буфере нет элементов для обработки, он устанавливает нуль. Мне интересно, есть ли разумная частота для выделения и освобождения сложного объекта буфера? И когда может быть смысл просто сохранить его в переменной экземпляра во время всего жизненного цикла модели? Может быть, кто-то может объяснить механику за выделение, это делается за счет стоимости процессора? Пожалуйста, порекомендуйте. Существует около 5-10 распределений/освобождений в секунду.Частое выделение/освобождение объекта - Objective -C

ответ

2

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

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

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

Инструмент «Распределительный инструмент» и инструмент для профилирования процессора - отличный инструмент для количественной оценки производительности.


Разумно размером ассигнования относительно дешевы, хотя они требуют операции синхронизации (или несколько) через нитки. Потребление новых памяти дорого, но трепетание на рабочем наборе с большим количеством allocs/deallocs обычно довольно быстро. В любой системе с большим количеством трафика alloc/dealloc будет фрагментация, и это будет дорогостоящим с течением времени.

1

Просто следуйте этим правилам:

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

Только тогда посмотрите на оптимизацию.

5-10 Распределение/освобождение в секунду в обычных условиях не должно быть заметным, если не существует сложного и медленного кода инициализации или синхронизации.

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

  • Нет связанных вопросов^_^