Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 不同操作的ATMega性能_Arduino_Avr_Avr Gcc_Atmel_Atmega - Fatal编程技术网

Arduino 不同操作的ATMega性能

Arduino 不同操作的ATMega性能,arduino,avr,avr-gcc,atmel,atmega,Arduino,Avr,Avr Gcc,Atmel,Atmega,有没有人在基于ATMega(2560)的系统上替换浮点操作的经验?每天都有一些非常常见的情况发生 例如: 比较比除法/乘法快吗 带乘法/除法的浮点到整数类型转换是否比不带类型转换的纯浮点运算快 我希望我不必为自己制定基准 示例一: int iPartialRes = (int)fArg1 * (int)fArg2; iPartialRes *= iFoo; 更快吗 float fPartialRes = fArg1 * fArg2; fPartialRes *= iFoo; iSign

有没有人在基于ATMega(2560)的系统上替换浮点操作的经验?每天都有一些非常常见的情况发生

例如:

  • 比较比除法/乘法快吗

  • 带乘法/除法的浮点到整数类型转换是否比不带类型转换的纯浮点运算快

我希望我不必为自己制定基准

示例一:

int iPartialRes = (int)fArg1 * (int)fArg2;
iPartialRes *= iFoo;
更快吗

float fPartialRes = fArg1 * fArg2;
fPartialRes *= iFoo;
iSign = fVal / fabs(fVal);
例二:

iSign = fVal < 0 ? -1 : 1;

这些问题只要想一想就可以解决

  • AVRs没有FPU,因此所有与浮点相关的操作都是在软件中完成-->fp乘法所涉及的远不止一个简单的整数乘法

  • 由于AVRs也没有整数除法单元,因此简单的分支也比软件除法快得多。如果除以浮点,这是最坏的情况:)


  • 但请注意,前两个示例产生了非常不同的结果。

    我知道输出是不同的。我只是不知道类型转换对性能的影响。