aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/generators.rb
diff options
context:
space:
mode:
authorRichard Schneeman <richard.schneeman@gmail.com>2015-04-11 18:10:19 -0500
committerRichard Schneeman <richard.schneeman@gmail.com>2015-04-11 18:10:19 -0500
commit11e8b46a1296889c9c85472a50c6ad6903c021c9 (patch)
treebbfd3e9cf9a82ef1a281981384204c59f1989872 /railties/lib/rails/generators.rb
parent29d40544b12652c64a6325a721dba44697b1004a (diff)
parentf7ba69436acc15da88a94b6af55076d3c7c912ca (diff)
downloadrails-11e8b46a1296889c9c85472a50c6ad6903c021c9.tar.gz
rails-11e8b46a1296889c9c85472a50c6ad6903c021c9.tar.bz2
rails-11e8b46a1296889c9c85472a50c6ad6903c021c9.zip
Merge pull request #19733 from yuki24/speed-up-levenshtein
Speed up Levenshtein by 50% and reduce 97% of memory usage
Diffstat (limited to 'railties/lib/rails/generators.rb')
-rw-r--r--railties/lib/rails/generators.rb7
1 files changed, 5 insertions, 2 deletions
diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb
index 341291f08b..a7da92168d 100644
--- a/railties/lib/rails/generators.rb
+++ b/railties/lib/rails/generators.rb
@@ -267,10 +267,13 @@ module Rails
d = (0..m).to_a
x = nil
- str1.each_char.each_with_index do |char1,i|
+ # avoid duplicating an enumerable object in the loop
+ str2_codepoint_enumerable = str2.each_codepoint
+
+ str1.each_codepoint.with_index do |char1, i|
e = i+1
- str2.each_char.each_with_index do |char2,j|
+ str2_codepoint_enumerable.with_index do |char2, j|
cost = (char1 == char2) ? 0 : 1
x = [
d[j+1] + 1, # insertion