Python中的数值线性代数工具
我使用numpy来进行数值线性代数的计算。我觉得如果我对某些计算方法做一些小调整,让它们更节省内存,可能会获得更好的性能。
我在想,Python中有没有什么工具可以帮助我检测缓存和TLB(翻译后备页表)缺失的情况。我最近上课时了解到有一个很不错的API,叫做PAPI,但它没有Python的接口:
http://icl.cs.utk.edu/papi/overview/index.html
另外,是否有好的方法可以对numpy或其他Python数值代码进行性能分析?timeit模块在代码中集成起来比较麻烦。mpi4py有一个不错的方式,可以使用MPE库进行性能分析。以下是演示代码中的一段(demo/mpe-logging/cpilog.py):
communication = MPE.newLogState("Comunicate", "red")
with communication:
comm.Bcast([n, MPI.INT], root=0)
这样会生成一个日志文件,可以以图形方式展示。但这有点偏向于MPI特定的内容。
谢谢。
2 个回答
1
也许你可以试试提供的那些性能分析工具,它们可能会帮你找到程序中运行最慢的部分。
可以看看 Python性能分析 的相关内容。
这些工具可能不会提供足够详细的信息让你立刻采取行动,但它们能告诉你该往哪里找改进的方向,并帮助你判断什么时候再优化就没什么效果了。
1
Robert Kern(NumPy的开发者之一)为这种情况写了一个叫做 line_profiler 的工具。这个工具更适合用来分析那些使用了很多NumPy的代码,而不是用来分析热点或使用cProfile的代码。