mxx_xm 发表于 2012-12-29 23:14:40

做了个小测试

本帖最后由 mxx_xm 于 2012-12-29 23:42 编辑

闲来无事想测测duemilanove的速度;
就想算下PI,确实很痛苦,最后只能减少位数,反正也是比较量;
算法并不简洁,只是为了产生运算;
long tt=0;
void setup() {               
Serial.begin(9600);
}

void loop() {
tt=millis();
long i = 1;                       
int flag = 1;               
double tmp;                       
double sum = 0.0;       
do
{
    tmp = 1.0/i;      
    sum = sum + flag * tmp;         

    i = i + 2;               
    flag = -flag;       
}
while(tmp>0.0000001);         

Serial.println(sum*4,8);
Serial.println(millis()-tt,DEC);
}



Duemilanove结果算到3.14159703也就是5位半是298592ms
Xmega结果算到3.14159703也就是5位半是197740ms
Mega==》》302052

wasdpkj 发表于 2012-12-29 23:17:38

:funk:好方法

弘毅 发表于 2012-12-29 23:41:55

额。。。xmega速度看来没有快一倍

mxx_xm 发表于 2012-12-29 23:44:11

弘毅 发表于 2012-12-29 23:41 static/image/common/back.gif
额。。。xmega速度看来没有快一倍

我没有外置晶振,使用的默认内置32m,不过客观的讲,实物肯定不是和广告那样啦~~

swim 发表于 2012-12-30 00:05:07

可以试试due的速度

mxx_xm 发表于 2012-12-30 00:29:31

swim 发表于 2012-12-30 00:05 static/image/common/back.gif
可以试试due的速度

那就要靠其他大神来了;我手头还没有DUE

swim 发表于 2012-12-30 21:02:43

mxx_xm 发表于 2012-12-30 00:29 static/image/common/back.gif
那就要靠其他大神来了;我手头还没有DUE

元旦回来我去试,刚好自己研发了due做好了2套成品在测试

swim 发表于 2013-1-5 14:11:02

due计算到3.14159465也就是5位半是8259ms
计算到3.14159285也就是6位半是82450ms



mxx_xm 发表于 2013-1-7 10:49:09

swim 发表于 2013-1-5 14:11 static/image/common/back.gif
due计算到3.14159465也就是5位半是8259ms
计算到3.14159285也就是6位半是82450ms

看来快的不是一点半点,而且不光是主频问题,浮点元算能力不是一个量级的

swim 发表于 2013-1-7 19:43:09

mxx_xm 发表于 2013-1-7 10:49 static/image/common/back.gif
看来快的不是一点半点,而且不光是主频问题,浮点元算能力不是一个量级的

是的avr单片机的浮点运算很弱,可以试试把小数变成整数在计算,估计会快很多

xmdesign 发表于 2013-1-7 20:30:16

Leaf Maple
计算到3.14159465是9209ms
计算到3.14159285是92097ms

xmdesign 发表于 2013-4-8 11:27:25

同样代码在STM32F4
计算到3.14159285是 37102ms
不知道利用DSP函数等会如何:)
页: [1]
查看完整版本: 做了个小测试