=D11-delta_rad
/DEC下限
13
=D11+delta_rad
/DEC上限
14
=C11.RA
/RA
15
=D14-delta_ra
/RA下限
16
=D14+delta_ra
/RA上限
17
=C10.select@b(between@b(OnOrbitDec,D12:D13))
/二分查找DEC
18
=D17.select(RA>=D10&&RA<=D11)
/查找RA
19
=D36.select(Dis(~,C11)<=A7)
/细筛
20
if D19!=[]
/合并结果
21
=FC(C11,D37)
22
=@|B10
/汇总结果
23
=file(OFile).export@tc(B22)
/写出结果
B10格的 fork 是多线程并行函数,允许分段执行上述算法。
B6格的 sort@m() 函数是并行排序方法,数据量大时可以提高效率,数据有序是二分法使用的前提条件。
C17格的 select@b(...) 函数是二分查找方法,也是本任务提速的关键。
后记
性能优化的问题依赖于高性能的算法,只有把计算量降下来才能有效提高运行效率,而高性能算法需要在工作中慢慢积累,感兴趣的同学可以来这里学习常用的性能优化算法:性能优化课程
http://www.raqsoft.com.cn/wx/course-performance-optimizing.html
高性能算法需要高效的编程工具来实现,之前已经说过,Python、SQL、java 等语言都有其弊端,要么无法并行,要么实现困难、维护困难。SPL 有足够的算法底层支持且允许高并发,代码能做到很简洁,还提供了友好的可视化调试机制,能有效提高开发效率,以及降低维护成本。
SPL下载地址:http://c.raqsoft.com.cn/article/1595816810031
SPL开源地址:https://github.com/SPLWare/esProc