【发布时间】:2013-02-07 21:38:19
【问题描述】:
.gsub 和/或 .sub 方法链对 Ruby 中的字符串有任何性能影响吗?
例如,下面是一个来自 Rails 源代码的方法示例,该方法为图像创建 alt 标记。它会删除文件扩展名和摘要(如果有)。
def image_alt(src)
File.basename(src, '.*').sub(/-[[:xdigit:]]{32}\z/, '').capitalize
end
在我的应用中,我希望它把下划线或连字符改为空格,所以我想在最后添加一个gsub 方法:
def image_alt(src)
File.basename(src, '.*').sub(/-[[:xdigit:]]{32}\z/, '').gsub(/(_|-)/, ' ').capitalize
end
这是否会在性能或风格方面引发危险信号?
【问题讨论】:
-
从维护的角度来看,我认为更多的正则表达式更小,比单个庞大的正则表达式要好。至于速度,我不确定。
-
尝试两种方式并衡量性能。或者编写一个小测试程序并比较实现。现实世界的性能问题通常不是您所期望的,因此不要过早优化。
-
Ruby 包含 Benchmark 类,可以轻松找到此类问题的答案。通读示例,编写一些测试并在此处发布您的结果,以便其他人学习。
标签: ruby regex coding-style