aboutsummaryrefslogtreecommitdiffstats
path: root/actionview/lib/action_view/helpers/asset_url_helper.rb
Commit message (Collapse)AuthorAgeFilesLines
* typo fix [ci skip]amitkumarsuroliya2015-08-181-2/+2
|
* [ci skip] Fix simultaneous spellingKasper Timm Hansen2015-08-101-1/+1
|
* Update info on browser connection limits [ci skip]Derek Prior2015-08-101-11/+18
| | | | | | | Browsers have not been limited to two connections per host for quite some time now. With more connections allowed, the trade-off involved in asset host distribution isn't so clear and it becomes more important that developers measure actual performance before and after.
* Freeze string literals when not mutated.schneems2015-07-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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)
* Merge pull request #20669 from akolomiychuk/image-pathYves Senn2015-06-291-0/+2
|\ | | | | | | Passing nil to image_tag
| * Add nil check in asset_pathAnton Kolomiychuk2015-06-291-0/+2
|/
* fix typo asser url [ci skip]Mehmet Emin İNAÇ2015-04-161-6/+6
|
* [Skip ci] Add information about :host optionsAnton Davydov2015-04-161-0/+30
| | | | | | Added informations about :host options for each url helper (#javascript_url, #video_url, #stylesheet_url, etc) based on #asser_url method.
* Revert "Merge pull request #15312 from JuanitoFatas/action_view/asset_path"Matthew Draper2014-09-141-1/+1
| | | | | | | This reverts commit 21ec7fefea5a1b823cb88733b019b3d52240801d. Per #16911, there's actually a good reason for a "blank" value to have a useful `to_s` here. So let's also add some tests to prove that.
* Return an absolute instead of relative path from an asset url in the case of ↵Jolyon Pawlyn2014-07-151-1/+1
| | | | the `asset_host` proc returning nil
* [ci skip] /javascript/ -> JavaScript - cover whole appAkshay Vishnoi2014-07-041-2/+2
|
* [ci skip] correct output for asset_helper methodsKuldeep Aggarwal2014-06-161-10/+10
| | | | see cc255d3
* Update documentation for setting asset_host to a Proc, mention that the ↵Manuel Meurer2014-05-311-1/+4
| | | | request parameter might not be supplied [ci skip]
* correct docs for (asset|image)_path [ci skip]Aditya Kapoor2014-05-271-14/+14
|
* Convert source to string if it is present.Juanito Fatas2014-05-251-1/+1
|
* Improve documentation for asset_urlHubert Łępicki2014-05-081-1/+8
| | | | Updated CHANGELOG.md with entry about :host in asset_url
* Allow custom asset host to be passed in asset_urlHubert Łępicki2014-05-081-1/+2
|
* always use File.joinphoet2014-05-011-2/+2
|
* Fix a few typos. [ci skip]namusyaka2013-09-041-2/+2
|
* Move actionpack/lib/action_view* into actionview/libPiotr Sarnacki2013-06-201-0/+355