Когда мы оптимизируем производительность, речь всегда идет об оборудовании.
Рассмотрим, какие параметры оборудования есть, какие у них слабые и сильные стороны, на что мы обращаем внимание, при анализе производительности.
Процессор и производительность в 1С
Основная задача – это вычисления и расчет, формулы, алгоритмы, циклы и сортировка.

Наши приоритеты
- Избегать циклы
- Избегать сортировки
- Избегать сложные вычисления, кэшировать результаты.
Где лучше вычислять: в запросе или в цикле после получения результата запроса?
- Если есть возможность вычислить в запросе, лучше в запросе.
- Если можно обойтись без сортировки, то лучше без нее.
В реальности в 1С с производительностью процессора проблем практически не бывает, а если и бывают, то скорее что-то связано с ОС.
Какие параметры мы мониторим
- Загруженность процессора
- Очередь к процессору (не более 2).
Оперативная память и производительность в 1С
Основная задача – это быстрый доступ к данным, т.к. чтение из оперативки в тысячи раз быстрее. Это второе по скорости чтения/записи данных оборудование после препроцессорного кэша.
Оперативка отвечает за все, что кэшируется и НЕ скидывается на жесткий диск. Но важный нюанс – это RAM на виртуальном сервере, т.к. он может быть без физического доступа к самой памяти, а реализован через жесткий диск (виртуальная оперативка).
RAM разбивается на страницы по 4Кб и эти страницы перемещаются, выделяются, резервируются и т.д. Если какие-то области памяти заняты, но долго не используются, то они скидываются на жесткий диск в виртуальную (swap-файл).

Когда оперативка заканчивается, ОС скидывает образ RAM на жесткий диск (swap-файл). Т.е. идет так называемое скидывание страниц с данными на жесткий диск, что в свою очередь крайне замедляет работу ОС и выполнение операций + добавляет нагрузку и на сам жесткий диск.

Основные проблемы
- Утечка памяти – это когда область RAM выделяется, но по окончании операции не высвобождается, тем самым разрастается. Такое бывает из-за циклических ссылок, использования процедур в циклах.
- Фрагментация – это когда невозможно выделить непрерывный блок области RAM, потому что выполняется слишком интенсивное выделение и освобождение областей.
Наши приоритеты
- Стараться использовать оперативку, а не жесткий диск.
- Не допускать утечек.
- Контролировать ошибки, связанные со страницами.
- Не использовать вызов процедур в циклах.
Если для процессора важно не допускать циклов со сложными вычислениями и сортировки, то для оперативки у нас основная задача не допускать утечек.
В целом если нет утечек, то с RAM проблем практически не бывает, потому что если ее не хватает, то ее достаточно легко и не дорого масштабировать/добавить.
Какие параметры мы мониторим:
- Количество свободной памяти
- Количество страниц, которые скидываются на жесткий диск
- Количество страниц с ошибками
- На 32 битных ОС могут быть фрагментации адресного пространства.
Данная тема подробно рассматривается в пакете видео-курса "Секреты 1С: Эксперта" Шаг 1. Занятие 01-01. Знакомство с 1С.
