<分区>
Possible Duplicate:
Fast algorithm for polar -> cartesian conversion
我正在通过 jvisualvm 运行一些寻路代码(有点慢),我发现 80% 的时间花在了我的 vector 实现上,更具体地说是将笛卡尔坐标转换为极坐标的部分,
r = Math.sqrt((x * x) + (y * y));
t = Math.atan2(y,x);
有什么老派的技巧可以让我的表现更好吗?
标签 java performance math
<分区>
Possible Duplicate:
Fast algorithm for polar -> cartesian conversion
我正在通过 jvisualvm 运行一些寻路代码(有点慢),我发现 80% 的时间花在了我的 vector 实现上,更具体地说是将笛卡尔坐标转换为极坐标的部分,
r = Math.sqrt((x * x) + (y * y));
t = Math.atan2(y,x);
有什么老派的技巧可以让我的表现更好吗?
最佳答案
根据我在寻路算法方面的经验,问题不在于那些线。
主要问题是“这两行你调用了多少次?”
您应该研究您的寻路算法。
无论如何,如果你想减少这些线路的延迟,可以为每个 x< 为
和 sqrt
和 atan2
制作一个预先计算的表格y
。甚至是将每个 (x, y) 直接映射到 (r, t) 的表格。
关于java - 更快的数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7703718/
相关文章:
java - 反序列化 Google Web Kit 响应 (Java) 和 Java Servlet
java - JNI 绑定(bind) - undefined symbol : gcj_personality_v0
java - Spring Security 中 PreAuthenticatedAuthenticationToken 的用途?
java - quartz spring集成调度,是否可以动态设置cron触发器
performance - 你会为了性能而违背 REST 的幂等性原则吗?
performance - 一种使用 Gamma 函数实现嵌套循环的更快方法