- 21 4月, 2016 11 次提交
-
-
由 प्रथमेश Sonpatki 提交于
-
由 प्रथमेश Sonpatki 提交于
add doc for `:type` option of `#create_join_table` [ci skip]
-
由 yuuji.yaginuma 提交于
Follow up to #24221.
-
由 Jon Moss 提交于
Fix small typos [ci skip]
-
由 Tom Copeland 提交于
-
由 Xavier Noria 提交于
Speed up String#blank? Regex
-
由 schneems 提交于
Follow up on https://github.com/rails/rails/commit/697384df36a939e565b7c08725017d49dc83fe40#commitcomment-17184696. The regex to detect a blank string `/\A[[:space:]]*\z/` will loop through every character in the string to ensure that all of them are a `:space:` type. We can invert this logic and instead look for any non-`:space:` characters. When that happens, we would return on the first character found and the regex engine does not need to keep looking. Thanks @nellshamrell for the regex talk at LSRC. By defining a "blank" string as any string that does not have a non-whitespace character (yes, double negative) we can get a substantial speed bump. Also an inline regex is (barely) faster than a regex in a constant, since it skips the constant lookup. A regex literal is frozen by default. ```ruby require 'benchmark/ips' def string_generate str = " abcdefghijklmnopqrstuvwxyz\t".freeze str[rand(0..(str.length - 1))] * rand(0..23) end strings = 100.times.map { string_generate } ALL_WHITESPACE_STAR = /\A[[:space:]]*\z/ Benchmark.ips do |x| x.report('current regex ') { strings.each {|str| str.empty? || ALL_WHITESPACE_STAR === str } } x.report('+ instead of * ') { strings.each {|str| str.empty? || /\A[[:space:]]+\z/ === str } } x.report('not a non-whitespace char') { strings.each {|str| str.empty? || !(/[[:^space:]]/ === str) } } x.compare! end # Warming up -------------------------------------- # current regex # 1.744k i/100ms # not a non-whitespace char # 2.264k i/100ms # Calculating ------------------------------------- # current regex # 18.078k (± 8.9%) i/s - 90.688k # not a non-whitespace char # 23.580k (± 7.1%) i/s - 117.728k # Comparison: # not a non-whitespace char: 23580.3 i/s # current regex : 18078.2 i/s - 1.30x slower ``` This makes the method roughly 30% faster `(23.580 - 18.078)/18.078 * 100`. cc/ @fxn
-
由 Kasper Timm Hansen 提交于
create_join_table should work with uuid
-
由 Rafael França 提交于
Use of `whether or not` instead of `regardless if ... or not`
-
由 Mohit Natoo 提交于
-
由 Jeremy Daer 提交于
Dump indexes in `create_table` for generates SQL in one query
-
- 20 4月, 2016 29 次提交
-
-
由 Xavier Noria 提交于
See the rationale in the comment in this patch. To benchmark this I ran a number of variations, ultimately narrowing to require 'benchmark/ips' str = '' regexp = /\A[[:space:]]*\z/ Benchmark.ips do |x| x.report('regexp') { regexp === str } x.report('empty') { str.empty? || regexp === str } x.compare! end This benchmark has consistently reported speedups around 3.5x: Calculating ------------------------------------- regexp 69.197k i/100ms empty 115.468k i/100ms ------------------------------------------------- regexp 2. 6.3%) i/s - 13.839M empty 9. 8.8%) i/s - 47.804M Comparison: empty: 9642607.6 i/s regexp: 2768351.9 i/s - 3.48x slower Sometimes even reaching 4x. Running the same bechmark on strings of 10 or 100 characters (with whitespace or present) has shown a slowdown of just about 1.01/1.02. Marginal, we seem to have a worthwhile trade-off here.
-
由 Vipul A M 提交于
use rails command in `time:zones` task desc [ci skip]
-
由 yuuji.yaginuma 提交于
-
由 Rafael França 提交于
Fix example for css_class_attribute and fix indentation
-
由 Prathamesh Sonpatki 提交于
-
由 प्रथमेश Sonpatki 提交于
[ci skip] Small grammar fix
-
由 Abhishek Jain 提交于
-
由 Ryuta Kamizono 提交于
-
由 Jeremy Daer 提交于
Add ActiveSupport::TimeZone.country_zones helper
-
由 Rafael Mendonça França 提交于
date_select helper with_css_classes option also accept a hash
-
由 Rafael Mendonça França 提交于
[ci skip]
-
由 Rafael França 提交于
Add html_safe support to ActionView Array#OutputSafetyHelper
-
由 Jeremy Daer 提交于
Object#inspect recursively inspects instance variables, exposing all internal state, including sensitive internal cache objects. Override Cache#inspect to give a high-level summary that never interferes with concurrent cache writes.
-
由 Ryuta Kamizono 提交于
If the adapter supports indexes in create table, it generates SQL in one query.
-
由 Rafael França 提交于
Fix `test_blank_columns_created_in_block`
-
由 Ryuta Kamizono 提交于
Follow up to 1683410c.
-
由 Jeremy Daer 提交于
Do not destructively mutate passed options hash in route definitions
-
由 Yves Senn 提交于
remove rails 4 specification in bin/rails for plugins [ci skip]
-
由 Ben A. Morgan 提交于
-
由 Kasper Timm Hansen 提交于
Remove unecessary comment
-
由 Jon Moss 提交于
-
由 Jeremy Daer 提交于
-
由 Vipul A M 提交于
Added documentation for ActiveJob queue adapter for a specific job. [ci skip]
-
由 Mohit Natoo 提交于
[ci skip] Added note on child class maintaining parent's queue adapter. [ci skip] Added note on child class maintaining parent's queue adapter. [ci skip] removed documentation for child class inheriting the queue adapter.
-
由 Andrey Novikov 提交于
That helper will return time zones for any country that tzdata knows about. So it will be much simpler for non-US people to list own country time zones in HTML selects or anywhere.
-
由 Rafael França 提交于
Define `arel_visitor` method on all adapters
-
由 Ryuta Kamizono 提交于
`Arel::Visitors::VISITORS` was removed at https://github.com/rails/arel/pull/412.
-
由 Sean Griffin 提交于
Small typo on a method name:
-
由 Santiago Pastorino 提交于
Remove reference to unknown method `dirty?` in docs [ci skip]
-