| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In preparing https://github.com/rails/rails/pull/11855, it took me a
minute to understand what was going on due to naming (parts refers first
to an attr_accessor, then to a local, and is then reassigned), but also
because the iterator conditionally builds nulls and then removes them.
I refactored to something much more functional-looking that I find
easier to read, but you may or may not. If you do, great! Enjoy! If
not, oh well, I tried. Can't win 'em all :)
Rationale:
* no name conflict between local var and attr_accessor
* no reassignment of local var
* algorithm spelled out in steps
* unused items in initial list filtered out early
* empty-list case handled early instead of reassigning local var
* no duplication of formatting strings ("0 seconds")
Benchmarks (after PR #11855 merged):
10000.times do
1.second.inspect
end
original #inspect
0.350000 0.000000 0.350000 ( 0.354709)
0.330000 0.000000 0.330000 ( 0.331885)
0.330000 0.000000 0.330000 ( 0.334441)
refactored #inspect
0.340000 0.000000 0.340000 ( 0.340080)
0.340000 0.010000 0.350000 ( 0.345069)
0.330000 0.000000 0.330000 ( 0.335873)
10000.times do
(1.day + 1.month + 2.minutes + 1.day).inspect
end
original #inspect
0.400000 0.000000 0.400000 ( 0.403027)
0.400000 0.000000 0.400000 ( 0.403781)
0.390000 0.000000 0.390000 ( 0.387596)
refactored #inspect
0.400000 0.010000 0.410000 ( 0.399792)
0.400000 0.000000 0.400000 ( 0.404145)
0.400000 0.000000 0.400000 ( 0.403820)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Even though singularize tells a better story, chop is more than 50%
faster and is all that is necessary in the case of Duration#inspect, in
which all of the candidates for chopping appear in the same method and
are all singularized by removing the final 's'.
Benchmarks:
10000.times do
1.second.inspect
end
original #inspect
0.740000 0.000000 0.740000 ( 0.739065)
0.740000 0.000000 0.740000 ( 0.741458)
0.740000 0.010000 0.750000 ( 0.744011)
refactored #inspect
0.330000 0.000000 0.330000 ( 0.333390)
0.330000 0.000000 0.330000 ( 0.331013)
0.320000 0.000000 0.320000 ( 0.330103)
10000.times do
(1.day + 1.month + 2.minutes + 1.day).inspect
end
original #inspect
0.790000 0.000000 0.790000 ( 0.794624)
0.770000 0.000000 0.770000 ( 0.774577)
0.770000 0.010000 0.780000 ( 0.771295)
refactored #inspect
0.390000 0.000000 0.390000 ( 0.392921)
0.400000 0.000000 0.400000 ( 0.397412)
0.370000 0.000000 0.370000 ( 0.379660)
|
|
|
|
|
| |
AS::BasicObject is used for proxy classes. Let's give it a less concerning
name. Also, it avoids the confusion with Ruby's Basic Object.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
|
|
|
|
| |
's/[ \t]*$//' -i {} \;)
|
| |
|
|
|
|
|
|
| |
[#4656 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
string [#2838 state:resolved]
Signed-off-by: Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>
|
| |
|
|
|
|
| |
state:resolved]
|
| |
|
|
|
|
| |
TimeWithZone when config.time_zone is set. Introducing Time.current, which returns Time.zone.now if config.time_zone is set, otherwise just returns Time.now
|
|
|
|
|
|
| |
error. Closes #10594.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8523 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
|
|
|
|
| |
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8412 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
|
|
|
|
| |
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8399 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
|
|
|
|
| |
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7762 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
|
|
|
|
|
|
| |
now. Closes #8575.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6937 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
|
|
|
|
| |
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6901 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
|
|
|
|
|
|
| |
Collins]. Remove unused code from Duration#inspect. Closes #7180. [Rich Collins]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6022 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
|
|
|
|
| |
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5952 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
|
|
|
|
|
|
| |
pass proxy objects around and have it all "just work"
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5948 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
|
|
[eventualbuddha]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5940 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
|