aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #22336 from tjschuck/enumerable_sum_perfKasper Timm Hansen2015-11-191-1/+1
|\ | | | | Change Enumerable#sum to use inject(:sym) specification
| * Change Enumerable#sum to use inject(:sym) specificationT.J. Schuck2015-11-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Not only does this make for simpler, more obvious code, it's also more performant: require 'benchmark/ips' module Enumerable def old_sum(identity = 0, &block) if block_given? map(&block).old_sum(identity) else inject { |sum, element| sum + element } || identity end end def new_sum(identity = 0, &block) if block_given? map(&block).new_sum(identity) else inject(:+) || identity end end end summable = (1..100).to_a # sum is 5050 Benchmark.ips do |x| x.report("old_sum") { summable.old_sum } x.report("new_sum") { summable.new_sum } x.compare! end # Calculating ------------------------------------- # old_sum 10.674k i/100ms # new_sum 14.542k i/100ms # ------------------------------------------------- # old_sum 117.350k (± 7.1%) i/s - 587.070k # new_sum 154.712k (± 3.8%) i/s - 785.268k # # Comparison: # new_sum: 154712.1 i/s # old_sum: 117350.0 i/s - 1.32x slower More benchmarks [here](https://gist.github.com/tjschuck/b3fe4e8c812712376648), including summing strings and passing blocks. The performance gains are less for those, but this version still always wins.
* | Add missing requireMatthew Draper2015-11-191-0/+2
|/ | | | Fixes #22311
* Using released concurrent-rubyRafael Mendonça França2015-11-161-1/+1
|
* Merge pull request #22215 from grosser/grosser/normalize_keyRafael França2015-11-165-39/+39
|\ | | | | send normalized keys to the cache backends so they do not need to man…
| * keep deprecated namespaced_key in case any subclass uses itMichael Grosser2015-11-103-2/+3
| |
| * send normalized keys to the cache backends so they do not need to manage ↵Michael Grosser2015-11-105-38/+37
| | | | | | | | this themselves
| * Merge pull request #22216 from grosser/grosser/fast-retRafael França2015-11-101-9/+12
| |\ | | | | | | fast and consistent return when local_cache does not exist
| | * fast and consistent return when local_cache does not existMichael Grosser2015-11-071-9/+12
| | |
| * | Merge pull request #22244 from pacso/time-days-in-yearAndrew White2015-11-103-0/+30
| |\ \ | | | | | | | | Add days_in_year method to Time class
| | * | Add days_in_year methodJon Pascoe2015-11-103-0/+30
| | | |
| * | | Minor fix in Module#mattr_reader documentationYuri Kasperovich2015-11-091-1/+1
| |/ /
* | | Use proper syntax for class method reference.Tyler Hunt2015-11-161-1/+1
| | |
* | | Fix instance variable not defined warning from Active Support test suiteJuanitoFatas2015-11-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before ./Users/Juan/dev/rails/activesupport/test/file_update_checker_shared_tests.rb:20: warning: instance variable @tmpdir not initialized After No warnings
* | | base (refined) Pathname#ascendant_of? also on Pathname#ascendXavier Noria2015-11-121-7/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | A small rewrite in a last attempt at writing obvious and portable code without manual string manipulation. Note that Pathname#== uses string comparison on Windows, so if client code passes "C:\foo" and "c:/foo/bar" the predicate won't see the former is an ascendant of the latter. Risky business.
* | | Use the file watcher defined by the app configDharam Gollapudi2015-11-111-1/+1
| | | | | | | | | This can make use of the FileEventedUpdateChecker, if available.
* | | let filter_out_descendants do less passesXavier Noria2015-11-111-9/+9
| | | | | | | | | | | | | | | | | | Whatever the inner loop selects, we already know is a descendant and can be filtered out right away from dirs_sorted_by_nparts to skip useless iterations.
* | | revises the implementation of Pathname#ascendant_of? (in refinement)Xavier Noria2015-11-112-1/+37
| | |
* | | normalizes spacing in a CHANGELOG [ci skip]Xavier Noria2015-11-111-6/+6
| | |
* | | update docs for MessageEncryptor#new to recommend a KDF [ci skip]Paul Kehrer2015-11-111-2/+2
| | |
* | | Add days_in_year methodJon Pascoe2015-11-113-3/+33
| | |
* | | Minor fix in Module#mattr_reader documentationYuri Kasperovich2015-11-111-1/+1
| | |
* | | fast and consistent return when local_cache does not existMichael Grosser2015-11-111-9/+12
| | |
* | | modernizes the test definitions in the file monitors suiteXavier Noria2015-11-111-16/+17
| | |
* | | applies code style guidelinesXavier Noria2015-11-115-14/+14
| | |
* | | simplifies the implementation of #watching?Xavier Noria2015-11-111-16/+12
| | |
* | | simplifies directories_to_watchXavier Noria2015-11-111-7/+4
| | |
* | | registers these changes in the CHANGELOGsXavier Noria2015-11-111-0/+11
| | |
* | | adds a comment about how does filter_out_descendants preserve orderXavier Noria2015-11-111-0/+1
| | |
* | | rewrites bare loop as untilXavier Noria2015-11-111-3/+1
| | |
* | | simplifies the implementation of existing parentXavier Noria2015-11-101-13/+2
| | |
* | | indents private methods as per our guidelinesXavier Noria2015-11-101-28/+28
| | |
* | | renames the module with shared tests for file monitorsXavier Noria2015-11-103-5/+5
| | |
* | | simplifies PathHelper with a Pathname refinementXavier Noria2015-11-101-22/+22
| | |
* | | the evented monitor filters out descendantsXavier Noria2015-11-102-10/+66
| | |
* | | better tmp file management in the monitors suiteXavier Noria2015-11-101-36/+88
| | |
* | | adds another test case in the monitors suiteXavier Noria2015-11-101-1/+17
| | |
* | | editorial pass over test method namesXavier Noria2015-11-091-5/+5
| | |
* | | improves waiting in the file monitors suiteXavier Noria2015-11-093-23/+21
| | |
* | | adds more tests for the file monitorsXavier Noria2015-11-091-0/+60
| | |
* | | s/watcher/checker/gXavier Noria2015-11-081-3/+3
| | | | | | | | | | | | "checker" is the name being used everywhere.
* | | more ad-hoc sleepsXavier Noria2015-11-081-2/+4
| | | | | | | | | | | | This sucks, but otherwise I get occasional Fs on Mac OS X.
* | | create the tmpdir under testXavier Noria2015-11-081-1/+1
| | | | | | | | | | | | | | | Mac OS X tries by all means to hide that /var is /private/var, and that is what FSEvents reports back.
* | | encapsulate sleep margin when touching filesXavier Noria2015-11-081-5/+6
| | |
* | | renames the monitor creation helperXavier Noria2015-11-083-11/+11
| | |
* | | refactors the file monitors test suiteXavier Noria2015-11-083-57/+47
| | | | | | | | | | | | | | | In particular files are no longer created in the current working directory, but in a temporary folder.
* | | let listen stop all listeners on teardownXavier Noria2015-11-081-0/+5
| | |
* | | s/@modified/@updated/gXavier Noria2015-11-081-6/+6
| | |
* | | stop ascending at the longest common subpathXavier Noria2015-11-082-33/+126
| | | | | | | | | | | | This commit also bases everything on Pathname internally.
* | | remove unused constants in the file monitor suitesXavier Noria2015-11-082-4/+0
| | |