| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
[ci skip] Fix #seconds_since_midnight documentation output it will al…
|
| |
| |
| |
| | |
return floating pointnumber
|
|\ \
| | |
| | | |
Fix Time.now format in documentation [ci skip]
|
| |/ |
|
|\ \
| | |
| | | |
Use #current instead of #now to prevent zone issues and use new ruby …
|
| |/
| |
| |
| | |
application's time zone
|
|\ \
| |/
|/| |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Change ^ and $ operators to \A and \z to prevent
code injection after the line breaks
|
| | |
|
|\ \
| | |
| | | |
Update docs for `formatted_offset`
|
| | |
| | |
| | | |
Output of `formatted_offset` is depends on input so it’s not always in +HH:MM format. Possible outputs are “+5:30”, “+530” or provided alternate UTC string [ci skip]
|
|\ \ \
| | | |
| | | | |
Updated docs for transform_keys & transform_values
|
| | | | |
|
| |/ / |
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We're calling this function on an empty hash as part of copying the
attribute set during dirty checking initialization. The new structure
caused a performance regression on loading records from the database.
This causes `User.all.to_a` to perform about 10% faster w/ 10k records.
Calculating -------------------------------------
User.all - master 9.000 i/100ms
User.all - sg-fix-ar-regression
8.000 i/100ms
-------------------------------------------------
User.all - master 81.236 (± 7.4%) i/s - 405.000
User.all - sg-fix-ar-regression
89.716 (± 7.8%) i/s - 448.000
|
| | |
|
|\ \
| | |
| | | |
Added Examples in docs for internal behavior of Array#to_formatted_s [ci skip]
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The concept of a blank date or time doesn't make sense so we can short
circuit the calls for `blank?` on these classes to gain small speed boost.
Fixes #21657
|
| | | |
|
| | |
| | |
| | |
| | | |
Call to Object#try was removed with this pull request https://github.com/rails/rails/pull/21596
|
|\ \ \
| | | |
| | | | |
Correcting `NameError` error message in `mattr_reader` method. [ci skip]
|
| |/ /
| | |
| | |
| | |
| | |
| | | |
commit https://github.com/rails/rails/commit/7dfbd91b0780fbd6a1dd9bfbc176e10894871d2d, `NameError` includes attribute_name also in error message [ci skip]
|
| | | |
|
|/ /
| |
| |
| | |
@rafaelfranca suggested in https://github.com/rails/rails/commit/f7c7bcd9c2a8b0e8c2840295d001d2d4dfd4cfae that code examples should display
the result after `# =>` and not after `#=>`.
|
|\ \
| |/
|/| |
Corrected `to_time` output in ActiveSupport Date Conversion docs [ci …
|
| |
| |
| |
| |
| | |
https://github.com/rails/rails/commit/48583f8bf74d1cefefea3cd6591bd546a9eaff6c, to_time returns times formatted as YYYY-MM-DD HH:MM:SS UTC [ci skip]
`to_time` method now returns in `YYYY-MM-DD HH:MM:SS UTC` format.
|
|\ \ |
|
| | |
| | |
| | |
| | | |
[ci skip]
|
| |/
|/| |
|
| |
| |
| | |
This was happened after this commit https://github.com/rails/rails/commit/2ebf47aea21ff8ac10681e53e78dd7a0e5c31c6e
|
| |
| |
| | |
`DateTime.utc` is not a valid method. It gives `NoMethodError: undefined method `utc` for DateTime:Class`. As we know that we can calculate `utc` time from `Time` Class, but we can’t calculate `utc` time from `DateTime` Class.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Saves about 6 MB, about 40% faster.
**strip_heredoc.rb**
```ruby
require "active_support/core_ext/object/try"
require "get_process_mem"
class String
def strip_heredoc
indent = scan(/^[ \t]*(?=\S)/).min.try(:size) || 0
gsub(/^[ \t]{#{indent}}/, '')
end
end
if ENV["MEASURE_MEMORY"] == "yes"
mem = GetProcessMem.new
GC.start
GC.disable
10000.times do
<<-MSG.strip_heredoc
xhr and xml_http_request methods are deprecated in favor of
`get :index, xhr: true` and `post :create, xhr: true`
MSG
end
before = mem.mb
after = mem.mb
GC.enable
puts "Before: #{before} MiB"
puts "After: #{after} MiB"
puts "Diff: #{after - before} MiB"
end
```
**patched_strip_heredoc.rb**
```ruby
require "active_support/core_ext/object/try"
require "get_process_mem"
class String
def patched_strip_heredoc
gsub(/^#{scan(/^[ \t]*(?=\S)/).min}/, "".freeze)
end
end
if ENV["MEASURE_MEMORY"] == "yes"
mem = GetProcessMem.new
GC.start
GC.disable
10000.times do
<<-MSG.patched_strip_heredoc
xhr and xml_http_request methods are deprecated in favor of
`get :index, xhr: true` and `post :create, xhr: true`
MSG
end
before = mem.mb
after = mem.mb
GC.enable
puts "Before: #{before} MiB"
puts "After: #{after} MiB"
puts "Diff: #{after - before} MiB"
end
```
**Before**
```
$ MEASURE_MEMORY=yes ruby strip_heredoc.rb
Before: 44.73828125 MiB
After: 44.7734375 MiB
Diff: 0.03515625 MiB
```
**After**
```
$ MEASURE_MEMORY=yes ruby patched_strip_heredoc.rb
Before: 37.9765625 MiB
After: 38.015625 MiB
Diff: 0.0390625 MiB
```
`44.7734375 - 38.015625 = 6.75`
=> **Saves about 6.75 MiB**
**benchmark.rb**
```ruby
require "benchmark/ips"
require_relative "./strip_heredoc"
require_relative "./patched_strip_heredoc"
def original
<<-MSG.strip_heredoc
xhr and xml_http_request methods are deprecated in favor of
`get :index, xhr: true` and `post :create, xhr: true`
MSG
end
def patched
<<-MSG.patched_strip_heredoc
xhr and xml_http_request methods are deprecated in favor of
`get :index, xhr: true` and `post :create, xhr: true`
MSG
end
Benchmark.ips do |x|
x.report("original") { original }
x.report(" patched") { patched }
x.compare!
end
```
```
$ ruby -v benchmark.rb
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]
Calculating -------------------------------------
original 5.652k i/100ms
patched 6.477k i/100ms
-------------------------------------------------
original 54.076k (± 5.7%) i/s - 271.296k
patched 74.557k (± 6.2%) i/s - 375.666k
Comparison:
patched: 74557.0 i/s
original: 54076.4 i/s - 1.38x slower
```
=> **About 38% faster**
1. Clone rails project `git clone git@github.com:rails/rails.git`
2. Apply this patch to
`activesupport/lib/active_support/core_ext/string/strip.rb`
3. `cd activesupport`
4. run `rake`
5. And tests passed:
```
➜ activesupport $ rake
/Users/Juan/.rubies/ruby-2.2.2/bin/ruby -w -I"lib:test"
"/Users/Juan/.rubies/ruby-2.2.2/lib/ruby/2.2.0/rake/rake_test_loader.rb"
"test/**/*_test.rb"
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
......................................................................S.
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
Finished in 15.343004s, 214.2344 runs/s, 24902.4898 assertions/s.
3287 runs, 382079 assertions, 0 failures, 0 errors, 48 skips
You have skipped tests. Run with --verbose for details.
```
|
| | |
|
| | |
|
|\ \
| | |
| | | |
Add require to ensure Time#advance works without implicit required
|
| | |
| | |
| | |
| | | |
required
|
| | | |
|
| |/
|/| |
|
| | |
|
| |
| |
| | |
`:nail_care:`
|
|\ \
| | |
| | | |
File renaming should be the last operation of an atomic write
|
| | | |
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The perf gain is relatively minor but consistent:
```
Calculating -------------------------------------
0.zero? 137.091k i/100ms
1.zero? 137.350k i/100ms
0 == 0 142.207k i/100ms
1 == 0 144.724k i/100ms
-------------------------------------------------
0.zero? 8.893M (± 6.5%) i/s - 44.280M
1.zero? 8.751M (± 6.4%) i/s - 43.677M
0 == 0 10.033M (± 7.0%) i/s - 49.915M
1 == 0 9.814M (± 8.0%) i/s - 48.772M
```
And try! is quite a big hotspot for us so every little gain is appreciable.
|
|\ \
| | |
| | | |
[ci skip] Documentation: Switch around a common phrase for readability
|
| | | |
|
| | |
| | |
| | |
| | | |
cause issues if it is not idempotent
|
|\ \ \
| | | |
| | | | |
Fix the documentation of Hash#except method [ci skip]
|