具有多行代码的Ruby性能

时间:2018-05-14 19:35:08

标签: ruby performance

这两个代码实现之间的性能是否存在差异?

首先实施:

class AppSerializer < ActiveModel::Serializer
  attributes :name, :device, :identify, :token, :color
end

第二次实施:

class AppSerializer < ActiveModel::Serializer
  attributes :name,
             :device,
             :identify,
             :token,
             :color
end

哪种表现更好?

1 个答案:

答案 0 :(得分:5)

从句法上讲,这两者是相同的,没有区别。当Ruby解析器参与此代码时,处理换行符所需的时间几乎无法估量,但我们在谈论可能是CPU上的少数几个时钟周期。每秒运行2 十亿时钟或更多。那,最好是纳秒

此外,此语句仅在创建模型时运行一次,因此很难衡量这种微小的性能影响。 CPU的温度会影响CPU的速度,这个温度会更加显着,并且会有足够的波动,因此无法在此处获得良好的读取。

更少的线条不会更快。较少的字符不会更快。表现与此无关。

如果您对性能感到好奇,请对其进行基准测试,但这只与代码有很大不同。在这种情况下,代码与格式化完全相同。

Ruby设计背后的原因是为了让开发人员更快地完成任务,您可以快速,简洁地以及以后易于阅读的方式表达您的意图。这是以性能为代价的,但作为Ruby开发人员,我们愿意做出让步。

如果某些事情必须快速,那么总是有优化方法,但避免过早优化很重要。如果它有效,并且它能够充分发挥您的用例,那就把时间花在解决新问题上,而不是重新解决旧问题。