Improve HTML escape benchmarks

This commit is contained in:
Takashi Kokubun 2022-11-04 23:24:16 -07:00
Родитель dd4ae9a475
Коммит f276d5a7fe
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 6FFC433B12EE23DD
2 изменённых файлов: 45 добавлений и 23 удалений

Просмотреть файл

@ -1,32 +1,23 @@
prelude: require 'cgi/escape'
prelude: |
# frozen_string_literal: true
require 'cgi/escape'
benchmark:
- name: escape_html_blank
prelude: str = ""
script: CGI.escapeHTML(str)
- script: CGI.escapeHTML("")
loop_count: 20000000
- name: escape_html_short_none
prelude: str = "abcde"
script: CGI.escapeHTML(str)
- script: CGI.escapeHTML("abcde")
loop_count: 20000000
- name: escape_html_short_one
prelude: str = "abcd<"
script: CGI.escapeHTML(str)
- script: CGI.escapeHTML("abcd<")
loop_count: 20000000
- name: escape_html_short_all
prelude: str = "'&\"<>"
script: CGI.escapeHTML(str)
- script: CGI.escapeHTML("'&\"<>")
loop_count: 5000000
- name: escape_html_long_none
prelude: str = "abcde" * 300
script: CGI.escapeHTML(str)
- prelude: long_no_escape = "abcde" * 300
script: CGI.escapeHTML(long_no_escape)
loop_count: 1000000
- name: escape_html_long_all
prelude: str = "'&\"<>" * 10
script: CGI.escapeHTML(str)
- prelude: long_all_escape = "'&\"<>" * 10
script: CGI.escapeHTML(long_all_escape)
loop_count: 1000000
- name: escape_html_real
prelude: | # http://example.com/
str = <<~HTML
- prelude: | # http://example.com/
example_html = <<~HTML
<body>
<div>
<h1>Example Domain</h1>
@ -36,5 +27,5 @@ benchmark:
</div>
</body>
HTML
script: CGI.escapeHTML(str)
script: CGI.escapeHTML(example_html)
loop_count: 1000000

Просмотреть файл

@ -0,0 +1,31 @@
prelude: |
# frozen_string_literal: true
require 'erb'
benchmark:
- script: ERB::Util.html_escape("")
loop_count: 20000000
- script: ERB::Util.html_escape("abcde")
loop_count: 20000000
- script: ERB::Util.html_escape("abcd<")
loop_count: 20000000
- script: ERB::Util.html_escape("'&\"<>")
loop_count: 5000000
- prelude: long_no_escape = "abcde" * 300
script: ERB::Util.html_escape(long_no_escape)
loop_count: 1000000
- prelude: long_all_escape = "'&\"<>" * 10
script: ERB::Util.html_escape(long_all_escape)
loop_count: 1000000
- prelude: | # http://example.com/
example_html = <<~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: ERB::Util.html_escape(example_html)
loop_count: 1000000