Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Какие математические операции в программировании самые ресурсоёмкие для компьютеров? Для софта и для железа.

ТехнологииПрограммирование+2
  · 5,7 K
Веб-разработчик, геймер, специалист по этике  · 5 июл 2022
Классический традиционный ответ конкретно на этот вопрос такой.
  1. Сложение, вычитание и побитовый сдвиг - считаем элементарными в один такт.
  2. Умножение очень дорогое. Целочисленное умножение на степени двойки можно и нужно заменить на побитовый сдвиг.
  3. Деление настолько дорогое, что если существует трюк, чтобы его избежать, стоит применить этот трюк. Целочисленное деление на степени двойки можно и нужно заменить на побитовый сдвиг.
  4. Любая другая математическая операция раскладывается на предыдущие три и нужно смотреть на конкретный алгоритм, чтобы оценить скорость работы. Но вы уже проиграли.
Однако, на современных процессорах, в 2022 году, это больше не такой простой вопрос, как может показаться, а уж ответ на него может быть за пределами понимания обывателя, если честно. Дело в том, что все без исключения современные процессоры - суперскалярные, и операции в них происходят не последовательно, а конвейерами в несколько накладывающихся друг на друга потоков. Плюс к этому сказываются особенности каждой конкретной архитектуры.
Например, для процессоров ARM в разделе Instruction Cycle Timings  - Data Operations из ARM7TDMI Technical Reference Manual r4p1 написано, что на ARM операции с данными выполняются за один цикл, "если не происходит сдвигов". И целая таблица прилагается с разными вариантами того, что происходит, если сдвиги приходится делать. (Я невеликий спец по настолько низкоуровневому программированию, но подозреваю, что Data operations включают в себя базовые ADD и тому подобное). Для умножения прямым текстом написано "инструкция умножения использует специальное аппаратное обеспечение", это на тему того, насколько умножение дорогое на процессоре.
На Intel x86_64 документ по производительности под названием Intel® 64 and IA-32 Architectures Optimization Reference Manual почти что засекречен, но если до него добраться вот с этой страницы, то в разделе Appendix D.3.1 Latency and Throughput with Register Operands можно увидеть таблицу, которая полностью совпадает с примерными правилами, которые я выше указал. 
При этом учтите, что предыдущие таблицы от D-1 до D-16 упоминают невероятное количество различных оптимизированных инструкций для конкретных математических операций - векторизированное сложение, умножение, SSE-шные расширения для всего подряд и тому подобное. Например, на интеловской архитектуре есть инструкция, которая может быть использована для перемножения комплексных чисел. Да, это всё равно четыре умножения и два сложения, вот только реализованы они на кристалле, и выполнятся быстрее чем четыре IMUL и два ADC. 
Это я к тому, что в случае с конкретными архитектурами процессоров понятие "математической операции" может быть размыто. На каких-то процессорах нам придётся сложную операцию делать алгоритмом из нескольких базовых операций, а на каких-то процессорах вся операция уже реализована в камне, и её можно вызвать как единое целое. Со своей собственной латентностью.
1 эксперт согласен
Вот это правильный ответ.
Пишу код и записываю подкаст  · 22 июн 2022  · dreamsorder.simplecast.com
Софт Все компьютерные программы одинаково простые (или сложные, как посмотреть), потому что состоят из довольно ограниченного набора элементарных операций. Их традиционно делят на следующие группы: - 📼 сохранения и загрузки из памяти  - 🦘перехода между разными частями программы в зависимости от условий  - 🧮 собственно математических операций изменения данных: от... Читать далее
«Порядок снов» в ТелеграмеПерейти на t.me/dreamsorder
Openstack DevOps and IBM/Informix Certified DBA . Phd in Math (Duality of spaces of...  · 23 февр 2022
Что тормозит любой даже очень дорогой десктоп ( задача локализована для проблем менее глобальных ) - это HDD любой самый наилучший. HDD (WD,Seagate or whichever you choose ) есть единственное в серверном десктопе механическое вращение не считая куллеров ( где оно во благо ) . Но любой компьютер будет работать со скоростью обусловленной самой медленной своей... Читать далее
1 эксперт не согласен
Это хороший ответ, но на другой вопрос, который автор вопроса не задавал.
Простые числа. Преподаватель с 2001, к.т.н. Яндекс.Директ. Интернет-маркетинг с 1997...  · 27 февр 2022
Из простейших математических операций главная "боль" разработчиков - деление с плавающей запятой/точкой. На нее даже завязали показатель производительности ЭВМ - FLOPS. От традиционной схемы "столбиком" отказались, т.к. она чрезмерно расточительная. В свое время процессору в помощь даже добавили дополнительное устройство - математический сопроцессор, который взял на... Читать далее
3 эксперта согласны
Инженер путей сообщения – строитель  · 23 февр 2022
Поиск решения систем линейных алгебраических уравнений. На больших задачах, размерностью в десятки миллионов, даже на самых современных компьютерах может занимать несколько часов. Ну и разложение на простые множители. На практической невыполнимости этой задачи за рациональное время построена вся современная криптография. Типа, ты можешь расшифровать вообще всё, но у... Читать далее
3 эксперта согласны
Математика физика история   · 23 июн 2022
Для железа всё довольно просто : все зависит от процесса - каждая команда имеет определённое время выполнения. При программировании может потребоваться использовать типы данных, с которыми процессор не умеет работать. Понятно, что умножение сводится к циклу сложения и сдвигов, а деление к циклу вычитаний и сдвигов. Поэтому деление и умножение будут более ресурсоемкие... Читать далее
2 эксперта согласны
ИБ специалист, web разработчик  · 24 июн 2022
Поиск определителя матрицы + их перемножение, факторизация целых чисел. Над созданием быстрых алгоритмов для решения этих задач не одна сотня математиков  и инженеров трудится. Даже аналоговые вероятностные машины разрабатывают под них до сих пор…
1 эксперт согласен
Хороший ответ. Дополню ещё тем, что ещё для компьютеров составляют проблему те операции, которые плохо поддаются ра... Читать дальше