快速平方根算法的javascript实现
2024-08-27 10:35:47
前几天看见了一个来自雷神之槌的平方根源码,原理多方有介绍,不赘述。
源码是c语言写的,我思考后发现这样的算法在javascript中也是可以完成的。
function InvSqrt(x){
var h=0.5*x;
var b=new ArrayBuffer(4);
var d=new DataView(b,0);
d.setFloat32(0,x);
var i=d.getInt32(0);
i=0x5f375a86-(i>>1);
d.setInt32(0,i);
var r=d.getFloat32(0);
r=r*(1.5-h*r*r);
return r;
}
测试:
console.time("t");
for(var i=0;i<10000000;i++){
InvSqrt(i);
}
console.timeEnd("t"); console.time("t");
for(var i=0;i<10000000;i++){
1/Math.sqrt(i);
}
console.timeEnd("t");
VM2303:18 t: 33438.000ms
VM2303:24 t: 16720.000ms
虽然结果还是比系统库慢,而且精度本来就低。不过我很满意。
最新文章
- OCR图像识别技术-Asprise OCR
- CSS层模型
- iOS开发Facebook POP动效库使用教程
- overridePendingTransition动画只设置一个
- jquery json 操作(转)
- BaiduMap开发,获取公交站点信息。
- show processlist 执行状态分析
- jqGrid中多选
- SPOJ 1812 Longest Common Substring II(后缀自动机)
- 百度Web App在线生成平台Site App体验
- 属性动画ValueAnimator用法
- 朱晔和你聊Spring系列S1E9:聊聊Spring的那些注解
- mysql 将一张表的数据更新到另外一张表中
- 解决web资源跨域请求问题
- swift 各种学习
- 解决IIS8中 URLRewriter 不能使用的方法
- springMVC一个Controller处理所有用户请求的并发问题
- TensorFlow安装,升级,基本操作
- MySQL 序列 AUTO_INCREMENT
- (转)Python——functools
热门文章
- 【luogu P1821 [USACO07FEB]银牛派对Silver Cow Party】 题解
- ActiveX控件注册不起作用的解决办法
- $_GET 与 $POST
- LeetCode7.整数反转 JavaScript
- 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本)
- C#中rpt的数据类型和Oracle中数据类型的匹配
- NSString+JSON - iOS
- Swift 中关于”??”操作符
- Qt学习交流(广告)
- P3818 小A和uim之大逃离 II(bfs,有条件的广搜)