LINUX.ORG.RU

стоит ли заморачиваться?

 


0

1

Есть сервер, в котором вот такой код (псевдо-код)


if(someCondition or foo.regexMatches("pattern1|pattern2|pattern3"))
 then (expression; return)

Я подумал, что если разнести его вот так


if(someCondition) then (expression; return)
if(foo.regexMatches("pattern1")) then (expression; return)
if(foo.regexMatches("pattern2")) then (expression; return)
if(foo.regexMatches("pattern3")) then (expression; return)

, то производительность увеличится, поскольку, если someCondition == true, то дальнешйие проверки не понадобяться. И дальше то же самое.

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

Стоит ли тут ваще думать в этом случае о мелких оптимизациях? Че то не хватает опыта, чтобы оценить, насколько это критично, например, при высоких нагрузках?



Последнее исправление: quest2017 (всего исправлений: 1)

Сделай что-нибудь вроде

if(check(foo, {"patter1", "pattern2", "pattern3"})) {...}
сохранишь компактность, насчет производительности сказать сложно, нужно проверять.

staseg ★★★★★
()
Ответ на: комментарий от anonymous

Что за язык?

Язык — Io(он медленный:))

someCondition истинно, вторая часть вычисляться не будет.

Да, так и есть. Че то я ступил:) Похоже, оба куска эквивалентны. Спасибо.

quest2017
() автор топика

не заморачивайся /thread

P.S. процессоры, компиляторы и виртуальные машины сейчас умные: сами всё оптимизируют на лету. Что-либо смотреть нужно в случае если обнаружились проблемы производительности и данные профилирования указывают конкретное место, откуда они берутся.

necromant ★★
()

стоит ли заморачиваться?

не стоит

Когда приложение пойдет в продакшен и будет тормозить именно в этом месте - тогда да.

kiotoze ★★★★
()
Ответ на: комментарий от quest2017

Похоже, оба куска эквивалентны. Спасибо.

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

mashina ★★★★★
()

стоит ли заморачиваться?

нет

loz ★★★★★
()

Откуда взялась потребность в оптимизации этого участка? Результаты профилирования сказали об этом? Если нет, то не парься.

I-Love-Microsoft ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.