优化时保留代码可读性

use*_*893 18 python algorithm optimization performance code-readability

我正在用Python和C编写一个带有一些复杂物理模拟算法的科学程序.在实现算法之后,我发现有很多可能的优化来提高性能.常见的是预先计算值,使计算超出周期,用更复杂的替代简单矩阵算法等.但是出现了一个问题.未经优化的算法要慢得多,但其逻辑和与理论的联系看起来更加清晰和可读.此外,扩展和修改优化算法更加困难.

所以,问题是 - 我应该使用哪些技术来提高可读性,同时提高性能?现在我试图保持快速和清晰的分支并且并行开发它们,但也许有更好的方法?

Rol*_*ald 15

就像一般性评论(我对Python不太熟悉):我建议你确保你可以轻松地将'参考实现' 的慢速部分与'优化'部分交换(例如,使用类似策略的东西)图案).

这将允许您交叉验证更复杂的算法的结果(以确保您不会弄乱结果),并将保持模拟算法的整体结构清晰(关注点分离).您可以将优化的算法放入单独的源文件/文件夹/包中,并根据需要详细记录它们.

除此之外,尽量避免通常的陷阱:不要过早优化(检查它是否真的值得,例如使用分析器),并且不要重新发明轮子(寻找可用的库).