我写了一个Ruby应用程序,它可以解析来自不同格式的html、xml和csv文件的大量数据。我如何才能找出代码中哪些部分花费的时间最长?
关于如何提高Ruby应用程序的性能,有没有什么好的参考资料?或者,你有没有任何你一直遵循的性能编码标准?
例如,您是否总是将字符串与
output = String.new
output << part_one
output << part_two
output << '\n'或者你会使用
output = "#{part_one}#{part_two}\n"发布于 2009-01-26 15:32:12
嗯,有一些众所周知的做法,比如字符串连接比"#{value}“慢得多,但为了找出你的脚本在哪里消耗了大部分时间或超过了所需的时间,你需要进行分析。有一种叫ruby-prof的宝石。分析器可以引起您的注意,甚至是那些很少发生的性能问题。我一直在使用它,并且发现它非常有用。下面是直接从它的official site获取的一些信息
Ruby prof是一个用于
的快速代码分析器。它的功能包括:
Ruby -它是一个C扩展,因此比标准的分析器快很多倍。
Ruby Modes-Ruby prof可以测量许多不同的参数,包括调用时间、内存使用和对象分配。
reports -可以生成文本和交叉引用的html报告
Ruby -类似于标准剖析器生成的报告
图形配置文件-类似于GProf,它们显示一个方法运行多长时间,哪些方法调用它,以及它调用哪些方法。
调用树配置文件-以适合KCacheGrind评测工具的调用树格式输出结果。
threads -支持同时分析多个线程
递归调用-支持分析递归方法调用
发布于 2009-01-26 15:20:14
发布于 2009-01-26 15:37:21
您可以使用标准Benchmark module测试各个代码段的性能。
你也可以在Ruby的不同实现(如1.9,Rubinius)上测试你的代码,看看这样做是否会加快速度。
当然,如果你的问题本质上是算法问题,那么就没有太多的理由担心像字符串连接速度这样的事情……
https://stackoverflow.com/questions/480109
复制相似问题