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

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

[复制链接]

签到天数: 785 天

[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

签到天数: 687 天

[LV.9]元老将成

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

使用道具 举报

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

本版积分规则

关闭

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

返回顶部