Точность точки плавающей запятой (fp: точное против fp: быстрая)

В C или C ++ опция компилятора для точности с плавающей запятой действительно влияет на реальные игры (маленькие /инди)?

Из моих наблюдений установка fp: fast во много раз быстрее, чем fp: точная и из того, что я здесь понимаю ( https://stackoverflow.com/questions/6889522/fpfast-vs-fpprecise-what-kind-of-errors-can-i-encounter ) разница точности между двумя параметрами компилятора изменяется только с 16-й цифры числа с плавающей запятой.

Кто-нибудь столкнулся с примером при использовании fp: fast пошел ужасно неправильно для 2D или 3D-игр?

Изменить: Чтобы уточнить, я не спрашиваю о точности самих значений с плавающей запятой (т. е. float vs double vs decimal). Только о точности, связанной с параметром компилятора.

9 голосов | спросил Inisheer 24 AM00000070000002831 2012, 07:52:28

1 ответ


10

Ваша интерпретация fp: fast vs fp: точные звуки подозрительны; Я уверен, что эффект больше, чем ошибка округления после 16-го десятичного разряда. Я обращаюсь к статье Брюса Доусона о точности с плавающей точкой для получения более подробной информации.

В общем случае ошибка точности с плавающей запятой является определенно реальной проблемой в разработке игр. Это особенно неприятно для программистов-физиков и для игр с большими мирами или длительное время (по порядку недель или месяцев, как MMO). Ошибки точности с плавающей запятой чаще всего проявляются в виде неустойчивости моделирования и неустойчивого движения, которое со временем постепенно ухудшается. Если вы не видите подобные артефакты в своей игре, а увеличение производительности является значительным, то обязательно должно быть безопасно придерживаться fp: fast.

ответил postgoodism 24 AM000000100000002731 2012, 10:43:27

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132