Fixed point

Тема в разделе "LANGS.C", создана пользователем dimonn, 10 сен 2007.

  1. dimonn

    dimonn New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2006
    Сообщения:
    38
    Адрес:
    Sim-City
    Навеяло тут Зубковым.. Короче, есть код в котором очень много математических вычислений с float типом. Дело в том, что точность не является критичной в отличии от общего времени вычисления и вот глядя на всё это появилась у меня идея все это оптимизировать путем создания класса fixed т.е. числа с фиксированной запятой - по word'у для целой и дробной части. Ну и естественно перегрузить для него все операторы +,- и т.д. используя не fpu, а x86 инструкции (mov, sub...) и уже потом конечный результат переводить в float. Будет ли прирост в производительности?
     
  2. 10110111

    10110111 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    319
    Адрес:
    Санкт-Петербург
    AFAIK, нет; для умножений/делений может даже медленнее быть
     
  3. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    float => 2*word => float
    на переводе больше потеряете
     
  4. Ultrin Faern

    Ultrin Faern New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2006
    Сообщения:
    170
    Вам лучше почитать, как реализована арифметика с плавающей точкой.

    Так вот:

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

    Операции умнжения и деления полностью идентичны операциям с фиксированной точкой.
    Итог - здесь выигрыша нет.

    Результат - так что вы там хотели оптимизировать? :)))