“24341d3a228926cf63acd8acb15eb24d4d04bf73”上不存在“python/paddle/fluid/backward.py”
  1. 27 10月, 2016 1 次提交
  2. 07 8月, 2016 2 次提交
  3. 06 10月, 2015 1 次提交
  4. 26 9月, 2015 1 次提交
  5. 20 7月, 2015 1 次提交
    • S
      Freeze string literals when not mutated. · 5bb1d4d2
      schneems 提交于
      I wrote a utility that helps find areas where you could optimize your program using a frozen string instead of a string literal, it's called [let_it_go](https://github.com/schneems/let_it_go). After going through the output and adding `.freeze` I was able to eliminate the creation of 1,114 string objects on EVERY request to [codetriage](codetriage.com). How does this impact execution?
      
      To look at memory:
      
      ```ruby
      require 'get_process_mem'
      
      mem = GetProcessMem.new
      GC.start
      GC.disable
      1_114.times { " " }
      before = mem.mb
      
      after = mem.mb
      GC.enable
      puts "Diff: #{after - before} mb"
      
      ```
      
      Creating 1,114 string objects results in `Diff: 0.03125 mb` of RAM allocated on every request. Or 1mb every 32 requests.
      
      To look at raw speed:
      
      ```ruby
      require 'benchmark/ips'
      
      number_of_objects_reduced = 1_114
      
      Benchmark.ips do |x|
        x.report("freeze")    { number_of_objects_reduced.times { " ".freeze } }
        x.report("no-freeze") { number_of_objects_reduced.times { " " } }
      end
      ```
      
      We get the results
      
      ```
      Calculating -------------------------------------
                    freeze     1.428k i/100ms
                 no-freeze   609.000  i/100ms
      -------------------------------------------------
                    freeze     14.363k (± 8.5%) i/s -     71.400k
                 no-freeze      6.084k (± 8.1%) i/s -     30.450k
      ```
      
      Now we can do some maths:
      
      ```ruby
      ips = 6_226k # iterations / 1 second
      call_time_before = 1.0 / ips # seconds per iteration 
      
      ips = 15_254 # iterations / 1 second
      call_time_after = 1.0 / ips # seconds per iteration 
      
      diff = call_time_before - call_time_after
      
      number_of_objects_reduced * diff * 100
      
      # => 0.4530373333993266 miliseconds saved per request
      ```
      
      So we're shaving off 1 second of execution time for every 220 requests. 
      
      Is this going to be an insane speed boost to any Rails app: nope. Should we merge it: yep. 
      
      p.s. If you know of a method call that doesn't modify a string input such as [String#gsub](https://github.com/schneems/let_it_go/blob/b0e2da69f0cca87ab581022baa43291cdf48638c/lib/let_it_go/core_ext/string.rb#L37) please [give me a pull request to the appropriate file](https://github.com/schneems/let_it_go/blob/b0e2da69f0cca87ab581022baa43291cdf48638c/lib/let_it_go/core_ext/string.rb#L37), or open an issue in LetItGo so we can track and freeze more strings. 
      
      Keep those strings Frozen
      
      ![](https://www.dropbox.com/s/z4dj9fdsv213r4v/let-it-go.gif?dl=1)
      5bb1d4d2
  6. 31 3月, 2015 1 次提交
  7. 25 2月, 2015 1 次提交
    • I
      activemodel: make .model_name json encodable · c5d62cb8
      Ian Ker-Seymer 提交于
      Previously, calling `User.model_name.to_json` would result in an infinite
      recursion as `.model_name` inherited its `.as_json` behavior from Object. This
      patch fixes that unexpected behavior by delegating `.as_json` to :name.
      c5d62cb8
  8. 21 1月, 2015 1 次提交
  9. 06 1月, 2015 1 次提交
  10. 03 1月, 2015 1 次提交
  11. 18 8月, 2014 1 次提交
  12. 05 8月, 2014 1 次提交
  13. 01 7月, 2014 1 次提交
  14. 25 6月, 2014 1 次提交
  15. 23 6月, 2014 1 次提交
  16. 30 5月, 2014 1 次提交
  17. 29 5月, 2014 1 次提交
  18. 12 11月, 2013 1 次提交
  19. 29 10月, 2013 1 次提交
  20. 23 6月, 2013 1 次提交
  21. 22 6月, 2013 1 次提交
  22. 02 5月, 2013 1 次提交
  23. 26 11月, 2012 1 次提交
  24. 25 11月, 2012 1 次提交
  25. 10 11月, 2012 1 次提交
  26. 21 10月, 2012 1 次提交
  27. 12 8月, 2012 1 次提交
  28. 09 8月, 2012 1 次提交
  29. 03 8月, 2012 2 次提交
  30. 28 7月, 2012 2 次提交
  31. 25 6月, 2012 1 次提交
  32. 24 6月, 2012 1 次提交
  33. 28 4月, 2012 1 次提交
  34. 01 4月, 2012 1 次提交
  35. 27 3月, 2012 2 次提交
  36. 11 3月, 2012 1 次提交