Какие математические методы реализованы в оборудовании FPU с .net?

StackOverflow https://stackoverflow.com/questions/1913301

  •  19-09-2019
  •  | 
  •  

Вопрос

Кто-нибудь знает, какие математические методы реализованы аппаратно процессором для .net?Например, у меня есть алгоритм, который часто использует atan.Я могу легко написать для этого таблицу поиска, но если math.net реализует это с использованием fpu или других аппаратных расширений, оно того не стоит.

Это было полезно?

Решение

Вопрос не в том, реализованы ли методы с использованием аппаратных инструкций x87, поскольку инструкции аппаратных трансцендентных функций работают медленно.

«Справочное руководство по оптимизации архитектур Intel 64 и IA-32» (загрузить здесь) списки fpatan как наличие задержки 150-300 циклов на новейшем оборудовании.Хорошо написанная программная реализация может обеспечить результат с полной точностью и двойной точностью за существенно меньшее время — действительно, высококачественные математические библиотеки делают именно это.

Другие советы

Почему бы просто не сравнить ваш подход к справочной таблице с atan(), предоставляемым .net.Тогда вы сможете четко определить, насколько велика на самом деле разница в скорости, используя справочную таблицу.

Благодаря этому вам не нужно знать, как работает базовая виртуальная машина, чтобы определить самый быстрый метод.Вы даже сможете количественно оценить ускорение.

Согласно этому блогу, JIT-компилятор Microsoft делает воспользуйтесь инструкциями FPU на платформе x86:

http://blogs.msdn.com/davidnotario/archive/2004/10/26/247792.aspx

Это довольно элементарная вещь, поскольку FPU уже более десяти лет являются стандартом для процессоров x86.

При использовании небольшого эталонного приложения оказывается, что даже при использовании fpu производительность Math.Atan2 не так хороша, как у альтернативной функции аппроксимации.

В моем простом тесте цикл Math.Atan2 занимает 8 секунд, а приблизительная версия — 5,5 секунды.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top