реклама на сайте
подробности

 
 
> Время преобразования int --> float, Хотелось бы побыстрей...
Andy_F
сообщение Apr 10 2009, 21:46
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 109
Регистрация: 27-07-06
Из: С.-Петербург
Пользователь №: 19 148



При изучении времени выполнения операций с плавающей точкой (IAR EWAVR 4.30A) выяснилось, что сами операции выполняются относительно быстро (умножение - ~90 тактов, деление - ~90 тактов, логарифм - ~240 тактов...). Но преобразование из int во float занимает чудовищное время - ~1600 тактов. Имеется в виду элементарная операция вида:

Код
int   a;
float b;
...
  b = a;
...


То есть, взяли мы отсчёт АЦП, и для вычисления чего-либо с плавающей точкой, должны сперва потратить 1600 циклов на преобразование. А если отсчёт не один...

Так вот, вопрос, - не существует ли способа ускорить этот процесс ? Рассматривание листинга дизассемблера показало, что в этом месте вызывается функция SL2F, предполагаю - SignedLong2Float. Не существует ли способа "сказать" компилятору, что следует использовать, допустим, SI2F (SignedInt2Float) ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
*antzol*
сообщение Apr 11 2009, 02:28
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 6-11-07
Пользователь №: 32 085



А если сделать так?
Код
int   a;
float b;
...
  b = (float)a * 1.25;  // какие-то вычисления с отсчетом АЦП
...


Сообщение отредактировал *antzol* - Apr 11 2009, 02:29
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 03:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01303 секунд с 7
ELECTRONIX ©2004-2016