aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorclaudiob <claudiob@gmail.com>2014-10-17 11:38:00 -0700
committerZachary Scott <e@zzak.io>2014-10-18 12:59:51 -0700
commit0ab075e75f58bf403f7ebe20546c7005f35db1f6 (patch)
treecf25b9db97e8a06eed8a4b32d451fae0704ee1bc /activesupport
parentfd56b51f9bd9a472a464f7fb5ba40560156cd557 (diff)
downloadrails-0ab075e75f58bf403f7ebe20546c7005f35db1f6.tar.gz
rails-0ab075e75f58bf403f7ebe20546c7005f35db1f6.tar.bz2
rails-0ab075e75f58bf403f7ebe20546c7005f35db1f6.zip
Replace (slower) block.call with (faster) yield
Performance optimization: `yield` with an implicit `block` is faster than `block.call`. See http://youtu.be/fGFM_UrSp70?t=10m35s and the following benchmark: ```ruby require 'benchmark/ips' def fast yield end def slow(&block) block.call end Benchmark.ips do |x| x.report('fast') { fast{} } x.report('slow') { slow{} } end # => fast 154095 i/100ms # => slow 71454 i/100ms # => # => fast 7511067.8 (±5.0%) i/s - 37445085 in 4.999660s # => slow 1227576.9 (±6.8%) i/s - 6145044 in 5.028356s ```
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/testing/time_helpers.rb4
1 files changed, 2 insertions, 2 deletions
diff --git a/activesupport/lib/active_support/testing/time_helpers.rb b/activesupport/lib/active_support/testing/time_helpers.rb
index 1112c6e0b1..8c63815660 100644
--- a/activesupport/lib/active_support/testing/time_helpers.rb
+++ b/activesupport/lib/active_support/testing/time_helpers.rb
@@ -90,7 +90,7 @@ module ActiveSupport
# Time.current # => Wed, 24 Nov 2004 01:04:44 EST -05:00
# end
# Time.current # => Sat, 09 Nov 2013 15:34:49 EST -05:00
- def travel_to(date_or_time, &block)
+ def travel_to(date_or_time)
if date_or_time.is_a?(Date) && !date_or_time.is_a?(DateTime)
now = date_or_time.midnight.to_time
else
@@ -102,7 +102,7 @@ module ActiveSupport
if block_given?
begin
- block.call
+ yield
ensure
travel_back
end