请选择 进入手机版 | 继续访问电脑版
    查看: 275|回复: 2

    [资料] STM32F767运行平方根倒数速算法

    [复制链接]

    签到天数: 833 天

    [LV.10]论坛见证者

    发表于 2018-8-3 12:47:41 | 显示全部楼层 |阅读模式
    几天前在往上看看一篇关于计算平方根倒数的算法的文章,在之前我会很自然地想,计算一个数的平方根倒数,不就调用C的标准的sqrt()函数再求倒数吗。但是看完文章后,不得不佩服最初写出这个算法的人——John Carmack,一个厉害的不行不行的大神。这个算法是用在了《雷神之锤3》这个游戏里,目的在于优化3D引擎的底层数学函数。以下是有关的内容,具体怎么回事我就不赘述了。于是自己想亲自试试看看效果怎么样。STM32F767自带了systick定时器,可以用来计时(废话,定时器当然可以用来计时)。也可以用来记录一段程序运行所花费的时间。参考Coremark跑分程序简单写了两个函数用来计算程序运行时间。实现毫秒级别的计时,所以,采用1000000次求一个数的平方根倒数。下面图片是测试的结果,采用标准函数用时2327毫秒,采用CarMark写的函数用时445毫秒,确实比标准函数快了几倍。

       start_time();
              printf("开始计时\r\n");

              for(i=0;i<1000000;i++)
              {

              t=(float)1/sqrt(3.1415926);


              }
              printf("time is%ld\r\n",get_time());
              printf("计时结束\r\n");


              start_time();
              printf("开始计时\r\n");
              for(i=0;i<1000000;i++)
              {

              t=InvSqrt(3.1415926);


              }
              printf("time is%ld\r\n",get_time());
              printf("计时结束\r\n");

    2.png

    签到天数: 693 天

    [LV.9]元老将成

    发表于 2018-8-4 13:05:48 | 显示全部楼层
    不错的资料
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    返回顶部