Можно ли программным путём ускорить вычисления?
Можно ли программным путём как то ускорить вычисления?
Допустим дано выражение 3*4-3+4*8/2 неважно какое. Можно ли как то программным путём вычислить его быстрее, используя различные ходы? Виртуально распаралелить задачи или что либо подобное.
Простые выражения зачем ускорять, или распараллеливать? А все объемные математические вычисления можно, и нужно! Основной путь: это быстрые алгоритмы, о которых сказали выше. Ассемблерные вставки используются, в основном, для небольших функций, которые часто вызываются: например в графике, для векторных вычислений. А распараллеливание, на PC реально ничего не дает, если нужна переносимость.
Распараллеливание - не бесплатно. Мьютексы и спинлоки убивают производительность. А без них никуда - если речь идет об общих данных... Для повышения производительности можно использовать ассемблерные вставки, быстрые алгоритмы, работающие либо за константу либо за логарифм...
Кек конечно можно!
В данном конкретном случае - зависит от процессора. На Itanium'ах можно распараллелить и такое простое выражение. На других - больше ресурсов затратишь на управление и синхронизацию, чем получишь выгоды от параллельного выполнения.
Да, можно. Именно так процессор и делает. Нужная оптимизация уже встроена в микропрограммы микропроцессора, выполнение загнанных в конвейер микропроцессора команд распараллеливается и оптимизируется им автоматически. Недаром же в нем сейчас сидит до миллиарда транзисторов :)