Регистрация  |  Вход

Оптимизация кода

Кто какие подходы использует для оптимизации своего кода?
Я знаю, что здесь можно написать много банальщины, но вдруг у кого-то есть свои изысканные решения. Прошу поделиться с коммьюнити!

Кто какие подходы использует для оптимизации своего кода?
Я знаю, что здесь можно написать много банальщины, но вдруг у кого-то есть свои изысканные решения. Прошу поделиться с коммьюнити!

Мне тоже интересно что я делаю не так.

Мне тоже интересно что я делаю не так.

Gres
Кто какие подходы использует для оптимизации своего кода?
Я знаю, что здесь можно написать много банальщины, но вдруг у кого-то есть свои изысканные решения. Прошу поделиться с коммьюнити!

Для меня оптимизация кода делится на 2 части:
1. Оптимизация кода как такового. То есть выделение повторяющихся блоков с последующим обобщением.

2. Оптимизация логики. Этот процесс посложнее и не всегда тривиален.

[quote="Gres"]Кто какие подходы использует для оптимизации своего кода?
Я знаю, что здесь можно написать много банальщины, но вдруг у кого-то есть свои изысканные решения. Прошу поделиться с коммьюнити![/quote]

Для меня оптимизация кода делится на 2 части:
1. Оптимизация кода как такового. То есть выделение повторяющихся блоков с последующим обобщением.

2. Оптимизация логики. Этот процесс посложнее и не всегда тривиален.

У меня обычно никогда не получалось доходить до оптимизации кода.
Но это больше проблема заказов, а не потому что не хочется. Хочется даже очень, и в голове постоянно рождаются куча идей по оптимизации, но время на них не остается. Заказчику это не интересно и платить за лишние часы потраченные на оптимизацию не все хотят. Везде работает принцип "Работает - не трогай".
Хотя нет, вру, один раз попался проект где я был сам себе хозяин, так там старался все делать красиво.
Главными моментами в оптимизации кода считаю:
- выделение повторяющегося кода в отдельные методы.
- разделение кода на слои (контроллеры, сервис, модель)
- уменьшение количества SOQL и DML.
- уменьшение итераций в циклах (избавляюсь от циклов в циклах)

У меня обычно никогда не получалось доходить до оптимизации кода. 
Но это больше проблема заказов, а не потому что не хочется. Хочется даже очень, и в голове постоянно рождаются куча идей по оптимизации, но время на них не остается. Заказчику это не интересно и платить за лишние часы потраченные на оптимизацию не все хотят. Везде работает принцип "Работает - не трогай".
Хотя нет, вру, один раз попался проект где я был сам себе хозяин, так там старался все делать красиво.
Главными моментами в оптимизации кода считаю:
- выделение повторяющегося кода в отдельные методы.
- разделение кода на слои (контроллеры, сервис, модель)
- уменьшение количества SOQL и DML.
- уменьшение итераций в циклах (избавляюсь от циклов в циклах)

- уменьшение количества SOQL

Иногда приходилось для этого делать циклы в циклах( Ибо других вариантов нету

[quote]- уменьшение количества SOQL[/quote]
Иногда приходилось для этого делать циклы в циклах( Ибо других вариантов нету

Циклы в циклах легко обходятся с помощью Map, конечно приходится немного извратиться и создать сложные мапы, но тогда и количество SOQL легко сокращается и все циклы строятся в 1 уровень.
Я помню разобрал для себя эту тему, когда на один вызов выделялось 200 000 code statements.
Жаль что их убрали, мне нравилось сражаться за этот limit.

Циклы в циклах легко обходятся с помощью Map, конечно приходится немного извратиться и создать сложные мапы, но тогда и количество SOQL легко сокращается и все циклы строятся в 1 уровень.
Я помню разобрал для себя эту тему, когда на один вызов выделялось 200 000 code statements.
Жаль что их убрали, мне нравилось сражаться за этот limit.

Хе! От также и борюсь) Через мап. Но иногда приходится и циклы в циклах делать( Тут от задачи зависит.

Хе! От также и борюсь) Через мап. Но иногда приходится и циклы в циклах делать( Тут от задачи зависит.

Dmitry Shnyrev
Циклы в циклах легко обходятся с помощью Map, конечно приходится немного извратиться и создать сложные мапы, но тогда и количество SOQL легко сокращается и все циклы строятся в 1 уровень.
Я помню разобрал для себя эту тему, когда на один вызов выделялось 200 000 code statements.
Жаль что их убрали, мне нравилось сражаться за этот limit.

Да я бы не сказал, что хорошо. Раньше каждый managed package имел свои 200 000 code statement, а теперь на CPU time одно на всех. Таким образом, из-за одного кривого package может отвалиться все остальное.

[quote="Dmitry Shnyrev"]Циклы в циклах легко обходятся с помощью Map, конечно приходится немного извратиться и создать сложные мапы, но тогда и количество SOQL легко сокращается и все циклы строятся в 1 уровень.
Я помню разобрал для себя эту тему, когда на один вызов выделялось 200 000 code statements.
Жаль что их убрали, мне нравилось сражаться за этот limit.[/quote]

Да я бы не сказал, что хорошо. Раньше каждый managed package имел свои 200 000 code statement, а теперь на CPU time одно на всех. Таким образом, из-за одного кривого package может отвалиться все остальное.