Разработка под высокую нагрузку
Разработка под высокую нагрузку
- Работа с кэшем
- Scala код
- Используйте View или withFilter, чтоб избежать создания временных коллекций
- Избегайте использования filter несколько раз подряд
- Используйте lazy val
- Используйте коллекции, имеющие оптимальную сложность поиска, взамен обладающих линейной при частом обращении за нахождением
- На while и рекурсии добавляйте защиту по кол-ву итераций
- Не эмулируйте существующие методы работы с коллекциями
- Используйте ArrayBuffer вместо ListBuffer
- При проверке на существование - не прибегайте к фильтрации
- При проверке на пустоту - не вычисляйте длину
- В checkWorkability (CWA) используйте getVar вместо обращений к БД (ASelect, ATSQL, OQuery, Load, byParent, byKey и т.д.)
- Избегайте использовать copyAro
- В Avi пишите только бизнес логику для взаимодействия с пользователем, все остальное выносите в методы Api
- Не пишите длинные выражения и запросы в одну строчку
- Создавайте общие trait без реализации для разных отображений с одинаковой функциональностью
- Создавайте библиотеки для использования общих методов в различных выборках
- Не используйте поля Tuple, а по возможности пользуйтесь экстрактором
- Используйте «.lastOption, .headOption, dropRight(1), .drop(1), .reduceOption» вместо «.last, .head, .init, .tail, .reduce»
- Не складывайте строки через +, используйте строковую интерполяцию
- При сборе сложной строки не создавайте много промежуточных результатов
- Используйте Option при работе с пустыми (null) ссылками
- Избегайте выполнения запросов внутри вложенных циклов
- Используйте параллельные вычисления, если требуется множественная обработка независимых объектов
- Sql запросы