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

 
 
> Время преобразования 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
Ответов
Rst7
сообщение Apr 11 2009, 05:40
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Чтото неправильно у вас с данными по тактам. Деление никак не 90. Смотрите лучше.

А вообще надо стараться работать только с целыми числами.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post



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

 


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


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