Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby ActiveSupport 1周VS 7天_Ruby On Rails_Ruby_Activesupport - Fatal编程技术网

Ruby on rails Ruby ActiveSupport 1周VS 7天

Ruby on rails Ruby ActiveSupport 1周VS 7天,ruby-on-rails,ruby,activesupport,Ruby On Rails,Ruby,Activesupport,我的问题很简短: 为什么一周的时间比七天多 user system total real 1.week: 10.848330 0.117741 10.966071 ( 11.623818) 7.days: 6.427236 0.059907 6.487143 ( 6.869768) 我(从:)看过它: 这个(来自:) 但是,对我来说,这只是一个乘法运算,不需要更多的时间! 而且,更糟糕的是,如果我这样做的话,它会更快 7 * 2

我的问题很简短: 为什么一周的时间比七天多

        user     system      total        real
1.week: 10.848330   0.117741  10.966071 ( 11.623818)
7.days:  6.427236   0.059907   6.487143 (  6.869768)
我(从:)看过它:

这个(来自:)

但是,对我来说,这只是一个乘法运算,不需要更多的时间! 而且,更糟糕的是,如果我这样做的话,它会更快

7 * 24.hours:  4.635190   0.058839   4.694029 (  5.049936)

谢谢你的解释

我不确定您在这里测试的是什么(因为您没有显示实际的基准脚本),但由于这两个代码路径非常相似,它们实际上也显示出非常相似的性能特征

通过使用(Ruby 2.7.1和ActiveSupport 6.0.3),我可以确认它们的速度大致相同:

require 'benchmark/ips'
require 'active_support/core_ext'

Benchmark.ips do |x|
  x.report("1.week") { 1.week }
  x.report("7.days") { 7.days }

  x.compare!
end
在我的机器上,我得到以下结果:

Warming up --------------------------------------
              1.week   195.777k i/100ms
              7.days   197.404k i/100ms
Calculating -------------------------------------
              1.week      1.915M (± 2.5%) i/s -      9.593M in   5.011463s
              7.days      1.855M (± 5.1%) i/s -      9.278M in   5.015019s

Comparison:
              1.week:  1915476.4 i/s
              7.days:  1855425.8 i/s - same-ish: difference falls within error

是的,从问题中可以看出,测试只运行了一次,因此没有考虑预热时间。在共享基准测试时,您应该始终尝试准确显示您是如何生成它的。最可能的解释是,您的基准测试方法和/或统计方法在某些方面存在缺陷。我总是建议任何想写基准测试的人都应该阅读整个线程,并且只有在你理解了线程中每条消息的每个单词后才开始写基准测试。上两节统计学课通常也没什么坏处。
      def weeks(value) #:nodoc:
        new(value * SECONDS_PER_WEEK, weeks: value)
      end
      def days(value) #:nodoc:
        new(value * SECONDS_PER_DAY, days: value)
      end
7 * 24.hours:  4.635190   0.058839   4.694029 (  5.049936)
require 'benchmark/ips'
require 'active_support/core_ext'

Benchmark.ips do |x|
  x.report("1.week") { 1.week }
  x.report("7.days") { 7.days }

  x.compare!
end
Warming up --------------------------------------
              1.week   195.777k i/100ms
              7.days   197.404k i/100ms
Calculating -------------------------------------
              1.week      1.915M (± 2.5%) i/s -      9.593M in   5.011463s
              7.days      1.855M (± 5.1%) i/s -      9.278M in   5.015019s

Comparison:
              1.week:  1915476.4 i/s
              7.days:  1855425.8 i/s - same-ish: difference falls within error