Ruby String类有多种方法和效率

时间:2011-01-18 16:05:00

标签: ruby performance

我正在浏览Ruby源代码,似乎无法找到我的问题的答案:

如果我在字符串(str.upcase.reverse)上调用多个方法,Ruby会优化此查询吗? upcase的代码基本上循环遍历字符串并将每个字母转换为其大写值,reverse反转字符串。 Ruby是否将这些(或任何其他可组合的组合)组合在一起,以便它同时反转和大写O(n)而不是在字符串中循环每个字符两次?

2 个答案:

答案 0 :(得分:2)

您希望的优化不会发生。正在对字符串调用reverse方法(str.upcase的结果)。请注意,结果行为仍为O(n)但是O(2n)O(n)

答案 1 :(得分:1)

不,没有像你描述的那样进行优化,但可以随意编写一个在一个循环中执行反向+大写的方法。

绝对查看Benchmark标准库。在编写优化时,始终使用基准测试,永远不要假设:)

PS:reverse.upcase仍为O(n)。 Big O表示法忽略常数。