- 不用数学库,求解sqrt(2)
- 精度到小数点后10位
平方根求解有两种常用方法:二分发和牛顿法, 考虑到出题者的意图,本题应该是要查看二分法的处理
二分法的退出条件和精度要去有关,当两次计算的结果在精度范围内是一致的,就退出。
二分法求解平方根
- 二分法实现开平方根,并和标准库一起做基准测试
- 使用go和tdd来实现
- 以tdd的方式完成二分法求平方根
- 完善基准测试
- 用性能分析工具分析改进点
# 用下面命令来生成性能分析文件
go test -bench="." -benchmem -cpuprofile profile.out
# 用下面的命令来在web生成可视化图
go tool pprof -http=172.17.0.2:8000 profile.out
- 求绝对值也是影响性能的点
- 带入精度考虑问题,会导致指数浮点转浮点会消耗大量性能
- 不考虑精度的情况下,标准库的方式性能会高两个数量级
- 所以还是可以从绝对值/浮点比较等地方进行优化
- 利用基本的数据结构知识灵活解决问题
- 本例中就是利用二分法来解决问题,只需要注意退出条件
- 性能分析工具用的不熟,还需要花事件深入分析
2019.10.18
在能使用math库的地方尽量使用math,毕竟math库做了大量优化, 后期是可以分析一下源码来提升技能的
除了二分法来解,还有牛顿法,后者需要一定的数学基础, 后期如果了解了,也可以添加进来