Зацените код

Тема в разделе "WASM.ASSEMBLER", создана пользователем hedgehog, 21 июн 2006.

  1. hedgehog

    hedgehog New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2005
    Сообщения:
    13
    Адрес:
    Russia
    Зацените следующий код. Он вычисляет сферическую функцию Бесселя. Можно ли его улучшить?

    [​IMG] 1865162168__bessel.rar
     
  2. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    hedgehog

    Ответ такой - если даже при распаковке JPEG алгоритма пользоваться инструкциями FPU, то время распаковки возрастет настолько, что mpeg2 фильм на проц 500 Mhz будет тормозить. Обычно сейчас используется целочисленная арифметика и табличный медод расчета с целью имменно увеличения быстродействия (кстати поэтому современные кодеки имеют такой большой размер). Т.е. я хочу сказать, что десяток простых инструций CPU по времени скорее всего меньше чем одна инструкция FPU.
     
  3. sergh

    sergh New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    128
    Адрес:
    rsdn
    PROFi

    Ни на что не претендую, сам этим не занимался, только слышал звон.

    Говорят, в новых процах это уже не так, вроде FPU сейчас очень шустро работает. Я слышал это лет 5 назад, "новые" на то время были P3.
     
  4. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    PROFi

    Нет, FPU хоть и работает быстро на современных компьютерах, но все же очень медленно по сравнению с основным набором инструкций CPU.

    Что касается твоего кода:

    - маленький компактный - да.

    - чувствуется алгоритм - да.

    - можно сделать быстрее - да, но только если этот участок кода вызывается многократно, если 5-10 раз то нет необходимости усовершенствовать.
     
  5. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев




    обычно используется SSE2/3
     
  6. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    PROFi

    Не знаю, помоему проще и быстрее написать fsin, чем самостоятельно его вычислять по таблицам, тем более они (талицы) уже зашиты в rom сопроцессора (ну или куда там, незнаю), поэтому вычисление синуса будет на аппаратном уровне, что быстрее.

    masquer

    Насчет SSE* - это да, они офигенно повышают производительность на компьютерах с процом от Intel, правда хрен где найдешь хороший справочник с примерами по этим командам.
     
  7. hedgehog

    hedgehog New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2005
    Сообщения:
    13
    Адрес:
    Russia
    Спасибо всем за ответы. Почему я использовал FPU? Потому что тут очень важна точность которой с SSE не достичь(простыми методами). FPU работет с 80 битами... Дело еще в том, что хочется прогу улучшить, поскольку на очень больших n ~ 100 и на малых x выдает неправильный ответ. Можно конечно на малых x использовать разложение в ряд Тейлора вокруг точки 0, но хочется универсальную вещь