mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	and switch-case branches. Buffer allocation optimization using `ALLOCA_N` would be the main benefit of patch. It eliminates the O(N) buffer extensions. It also reduces the number of branches using escape table like https://mattn.kaoriya.net/software/lang/c/20160817011915.htm. Closes: https://github.com/ruby/ruby/pull/2226 Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Co-authored-by: Yasuhiro MATSUMOTO <mattn.jp@gmail.com>
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
prelude: require 'cgi/escape'
 | 
						|
benchmark:
 | 
						|
  - name: escape_html_blank
 | 
						|
    prelude: str = ""
 | 
						|
    script: CGI.escapeHTML(str)
 | 
						|
    loop_count: 20000000
 | 
						|
  - name: escape_html_short_none
 | 
						|
    prelude: str = "abcde"
 | 
						|
    script: CGI.escapeHTML(str)
 | 
						|
    loop_count: 20000000
 | 
						|
  - name: escape_html_short_one
 | 
						|
    prelude: str = "abcd<"
 | 
						|
    script: CGI.escapeHTML(str)
 | 
						|
    loop_count: 20000000
 | 
						|
  - name: escape_html_short_all
 | 
						|
    prelude: str = "'&\"<>"
 | 
						|
    script: CGI.escapeHTML(str)
 | 
						|
    loop_count: 5000000
 | 
						|
  - name: escape_html_long_none
 | 
						|
    prelude: str = "abcde" * 300
 | 
						|
    script: CGI.escapeHTML(str)
 | 
						|
    loop_count: 1000000
 | 
						|
  - name: escape_html_long_all
 | 
						|
    prelude: str = "'&\"<>" * 10
 | 
						|
    script: CGI.escapeHTML(str)
 | 
						|
    loop_count: 1000000
 | 
						|
  - name: escape_html_real
 | 
						|
    prelude: | # http://example.com/
 | 
						|
      str = <<~HTML
 | 
						|
        <body>
 | 
						|
        <div>
 | 
						|
            <h1>Example Domain</h1>
 | 
						|
            <p>This domain is established to be used for illustrative examples in documents. You may use this
 | 
						|
            domain in examples without prior coordination or asking for permission.</p>
 | 
						|
            <p><a href="http://www.iana.org/domains/example">More information...</a></p>
 | 
						|
        </div>
 | 
						|
        </body>
 | 
						|
      HTML
 | 
						|
    script: CGI.escapeHTML(str)
 | 
						|
    loop_count: 1000000
 |