Оптимизация

Jan 13, 2015 02:17

Как-то так сложилось, что мне редко приходилось высчитывать или измерять циклы/такты и микро-, а потом и наносекунды, делать профилирование и т.п. При этом я давно знаю, что любая оптимизация, которая не является алгоритмической, даёт некий коэффициент прироста производительности, от 1 до, скажем, 10. При этом понятно, что в особо запущенных ( Read more... )

effectiveness, math, technology, computer, thoughts, science, software

Leave a comment

Comments 11

izard January 13 2015, 10:26:14 UTC
single thread - да, 2x - 5x от неалгоритмических оптимизаций. multithreaded - часто больше, если оптимизировать critical path

Reply

archaicos January 13 2015, 10:53:54 UTC
Параллелить мелочь не имеет смысла. Много возни, а выхлопа мало, т.к. переключение контекста и синхронизация тоже чего-то стоят и лишний раз их делать дорого. Параллелить же что-то весомое - это уже фактически делать некую алгоритмическую оптимизацию.

Reply


lionet January 13 2015, 10:31:08 UTC
Ещё огромная разница при спилле из кэша.

Кроме того, http://www.cs.virginia.edu/~techrep/CS-2001-12.pdf

Reply

archaicos January 13 2015, 10:50:49 UTC
С кэшем понятно, но компилятор не всегда имеет достаточно мозгов и свободы чтобы его эффективно использовать. Вон, народ специально руками размещает элементы в структурах, и так же специально и руками меняет вложенные массивы/структуры на развёрнутые/линейные или наоборот, в зависимости от нужды. Компилятор это не всегда может сделать сам без помощи программиста.

Reply

dennyrolling January 15 2015, 07:02:05 UTC
где-то я читал что сильно умный компилятор менял местами for loops чтобы было быстро. и перцы не намеряли изменения прохода по строчкам массива против прохода по столбцам, который обещали!

Reply

archaicos January 15 2015, 07:07:53 UTC
:)

Reply


morfizm January 13 2015, 11:07:09 UTC
Помимо рефакторинга и изменения алгоритма, есть ещё один способ ускорить (ИМХО, самый лучший) - это изменение дизайна. Выкинуть ненужную фичу :)

Reply

archaicos January 13 2015, 11:28:33 UTC
Это политический алгоритм. :)

Reply

ermouth January 13 2015, 21:46:38 UTC
Не обязательно, её можно сделать подмножеством уже имеющейся - то-есть формально она как бы есть, но в самом деле её нет )

Reply

archaicos January 14 2015, 05:38:40 UTC
Автор выкинутого кода пожалуется начальству. :)

Reply


fatoff January 13 2015, 19:01:40 UTC
Присоединяюсь к ремаркам выше.

Изчо неоптимальный dynamic memory alloc/release есть Зло.

Половина случаев, что что-то оптимизировал было о помещении некоторой группы переменных в непрерывный блок памяти и его правильном достаточно долгом life cycle.

Reply


Leave a comment

Up