python - 提升计算速度
问题描述
我真的需要加快我的 N-Body 模拟的计算速度,但我真的不知道该怎么做 numpy(jit) 似乎没有那么多工作而且我没有选择我需要加快速度的代码是这个
def calcul():
mt[:,6:9]=0.0
for b in range(0,n):
for a in range(b,n):
F=0.0
p=mt[b,0:3]-mt[a,0:3]
p2=p@p
if p2 == 0 or math.sqrt(p2) >= epsilon_2 :
pass
else:
F=(g*mt[b,9:10]*mt[a,9:10]*p)/((p2+epsilon)**1.5)
mt[a,6:9]+=F
mt[b,6:9]+=-F
mt[:,6:9]/mt[:,9:10]
mt[:,3:6]+=mt[:,6:9]*times
mt[:,0:3]+=mt[:,3:6]*times
for t in range(itteration):
calcul()
print(t+1)
a=np.append(a,mt[:,0:3],axis=0)
解决方案
您在 if 语句中使用平方根。这需要时间来计算。而不是math.sqrt(p2) >= epsilon_2
你可以使用p2 >= epsilon_2**2
.
推荐阅读
- c# - 在 C# 中从 ironpython 调用第 3 方模块 python 函数
- reactjs - 使用 D3 + ReactJS 进行世界地图缩放
- reactjs - 如果用户订阅了 React (LocalStorage),则不再显示弹出窗口
- django - 如何在 Django 模板中迭代查询集字典
- api - Square Checkout API - 您可以更改“下订单”按钮文本吗?
- node.js - 如何通过Ajax将数组传递给nodejs中的服务器
- python - 带有 get_absolute_url 的空白链接
- javascript - html 上的插值内容以字符串格式出现
- r - 修改图例中的行数
- java - @Preauthorize Spring Security 动态