【发布时间】:2011-02-18 21:21:40
【问题描述】:
我想进一步提高现有 Erlang 程序的效率。首先,我想确定瓶颈,然后决定进一步优化的地方。
我尝试过fprof,但它只提供有关总运行时间和平均运行时间的信息。我最希望看到与 fprof 的输出类似的日志,但就函数和进程的平均和总内存使用而言。
对于初学者来说,分析单个模块就足够了,它不会产生进程,只会调用它的函数。这已经有所帮助,因为我可以将程序分成不同的模块进行测试。
典型的可疑点是处理更大的列表。
这里++的用法已经被lists:reverse([Head|Tail])这样的语法解决了。
我也在考虑使用 ETS 表格而不是列表来处理包含数百个元素的案例。
提前谢谢你!
【问题讨论】:
-
我怀疑使用 ets 表而不是列表在空间方面会是一个优势,无论列表/ets 表有多大(列表每个元素只有一个指针的开销)--ets表格通常只会在时间上为您提供优势。