-
-
Save wpeterson/c851be471bd91868716c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'bundler/setup' | |
require 'benchmark' | |
require 'escape_utils' | |
require 'cgi' | |
examples = { | |
'small' => 'โค<a href="harmless">', | |
'medium' => '<div class="search"> <form id="tag-search-form"> <input id="tag-search-input" class="search-input placeholder" type="text" placeholder="emoji"/> <span class="search-icon"></span> <span class="search-clear"></span> <div id="categories-list" class="sorting"> <ul id="tag-search-results" class="poll-categories" class="hide"></ul> <ul id="suggested-categories" class="poll-categories"> <li><a href="" class="poll-category" data-category="tag" data-name="ios7beta">ios7beta</a></li> <li><a href="" class="poll-category" data-category="tag" data-name="starwarslife">starwarslife</a></li> <li><a href="" class="poll-category" data-category="tag" data-name="tvduos">tvduos</a></li> <li><a href="" class="poll-category" data-category="tag" data-name="rathermeet">rathermeet</a></li> <li><a href="" class="poll-category" data-category="tag" data-name="dcvsmarvel">dcvsmarvel</a></li> </ul> </div> </form> </div>', | |
'large' => '<div id="main-container" class="main-container"> <div class="middle-gutter"> <div class="bears"> <div class="bears-app-download"> <a href="https://itunes.apple.com/app/polar/id563322683" class=""></a> </div> </div> </div> <div id="polls"> <section id="polls-section"> <div class="keyboard-shortcuts"> <ul class="shortcut-items hidden"> <li>↑ previous poll</li> <li>↓ next poll</li> <li>← vote left</li> <li>→ vote right</li> </ul> </div> <header> <div class="profile-wrap wrapper"> <div class="avatar-wrap"> </div> <div class="profile-info"> </div> </div> </header> <div id="main-polls-wrap"> <ul class="polls"> <li id="poll-115328" class="pollbox"> <div class="pollbox-wrap"> <div class="polltop"> <cite><a href="/users/wpeterson">wpeterson</a> Asks</cite> <a href="/users/wpeterson"><img src="http://avatars-polarb-com.a.ssl.fastly.net/000/012/318/12318-small_retina-68e99cfe25deef78.jpg" border="0" /></a> <h2 class="poll-question"><a href="/115328">Do You <img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/heart.png"> Emoji Polls?</a></h2> </div> <div class="pollvotesbox"> <span class="pollor">Or</span> <ul class="pollvotes"> <li class="polloption polloption1" data-choice="1" data-pollid="115328">Yes <img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/heart.png"></li> <li class="polloption polloption2" data-choice="2" data-pollid="115328">No <img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/poop.png"></li> </ul> <span class="pollleft"></span> <span class="pollright"></span> </div><!-- end ./pollvotesbox --> <div class="pollimgbox"> <ul class="pollimgvotes"> <li> <a class="pollimgvote pollimgvote1" data-choice="1" data-pollid="115328"></a> <div class="pollimgresult pollimgresult1" data-choice="1" data-pollid="115328"><span class="votecount1" style="">54</span></div> </li> <li> <a class="pollimgvote pollimgvote2" data-choice="2" data-pollid="115328"></a> <div class="pollimgresult pollimgresult2" data-choice="2" data-pollid="115328"><span class="votecount2" style="">46</span></div> </li> </ul> <img src="http://polls-polarb-com.a.ssl.fastly.net/000/115/328/115328-1-large-d499d55a833dd6ca.jpg" alt="Do You <img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/heart.png"> Emoji Polls?"> </div><!-- end ./pollimgbox --> <ul class="pollactions group"> <li><a href="https://itunes.apple.com/app/polar/id563322683?ls=1&mt=8"><span class="pollcomment"></span>Comment</a></li> <li class="pollactionslast"><a href="/115328"><span class="pollresults"></span>Share</a></li> </ul> <ul class="pollcomments group"> <li><strong>wpeterson</strong> OK. Web emoji fixed in poll comments, too.</li> <li><strong>peort30</strong> <img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/smiley.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/smiley.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/smile.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/smile.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/grinning.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/grinning.png"></li> <li><strong>polar</strong> <img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/penguin.png"></li> <li><a href="/115328">See more</a></li> </ul> </div><!-- end ./pollbox-wrap --> </li> <li id="poll-112694" class="pollbox"> <div class="pollbox-wrap"> <div class="polltop"> <cite><a href="/users/itjennytime">itjennytime</a> Asks</cite> <a href="/users/itjennytime"><img src="http://avatars-polarb-com.a.ssl.fastly.net/000/014/311/14311-small_retina-f307a46e42763d9e.jpg" border="0" /></a> <h2 class="poll-question"><a href="/112694">Anyone Know The Answer?</a></h2> </div> <div class="pollvotesbox"> <span class="pollor">Or</span> <ul class="pollvotes"> <li class="polloption polloption1" data-choice="1" data-pollid="112694">Dont Use Emoji Pro</li> <li class="polloption polloption2" data-choice="2" data-pollid="112694">Yes! (comment)</li> </ul> <span class="pollleft"></span> <span class="pollright"></span> </div><!-- end ./pollvotesbox --> <div class="pollimgbox"> <ul class="pollimgvotes"> <li> <a class="pollimgvote pollimgvote1" data-choice="1" data-pollid="112694"></a> <div class="pollimgresult pollimgresult1" data-choice="1" data-pollid="112694"><span class="votecount1" style="">19</span></div> </li> <li> <a class="pollimgvote pollimgvote2" data-choice="2" data-pollid="112694"></a> <div class="pollimgresult pollimgresult2" data-choice="2" data-pollid="112694"><span class="votecount2" style="">6</span></div> </li> </ul> <img src="http://polls-polarb-com.a.ssl.fastly.net/000/112/694/112694-1-large-d5ab0dbe08ec47ee.jpg" alt="Anyone Know The Answer?"> </div><!-- end ./pollimgbox --> <ul class="pollactions group"> <li><a href="https://itunes.apple.com/app/polar/id563322683?ls=1&mt=8"><span class="pollcomment"></span>Comment</a></li> <li class="pollactionslast"><a href="/112694"><span class="pollresults"></span>Share</a></li> </ul> <ul class="pollcomments group"> <li><strong>itjennytime</strong> <a class="" href="/polls/tags/emoji" title="#emoji">#emoji</a></li> <li><strong>doodledump</strong> Mailman</li> </ul> </div><!-- end ./pollbox-wrap --> </li> <li id="poll-110180" class="pollbox"> <div class="pollbox-wrap"> <div class="polltop"> <cite><a href="/users/blittle202">blittle202</a> Asks</cite> <a href="/users/blittle202"><img src="http://avatars-polarb-com.a.ssl.fastly.net/000/015/302/15302-small_retina-c3c4001165c0f65b.jpg" border="0" /></a> <h2 class="poll-question"><a href="/110180">What Is This Emoji?</a></h2> </div> <div class="pollvotesbox"> <span class="pollor">Or</span> <ul class="pollvotes"> <li class="polloption polloption1" data-choice="1" data-pollid="110180">Someone Praying</li> <li class="polloption polloption2" data-choice="2" data-pollid="110180">A High Five</li> </ul> <span class="pollleft"></span> <span class="pollright"></span> </div><!-- end ./pollvotesbox --> <div class="pollimgbox"> <ul class="pollimgvotes"> <li> <a class="pollimgvote pollimgvote1" data-choice="1" data-pollid="110180"></a> <div class="pollimgresult pollimgresult1" data-choice="1" data-pollid="110180"><span class="votecount1" style="">77</span></div> </li> <li> <a class="pollimgvote pollimgvote2" data-choice="2" data-pollid="110180"></a> <div class="pollimgresult pollimgresult2" data-choice="2" data-pollid="110180"><span class="votecount2" style="">17</span></div> </li> </ul> <img src="http://polls-polarb-com.a.ssl.fastly.net/000/110/180/110180-1-large-d676f16beaa73807.jpg" alt="What Is This Emoji?"> </div><!-- end ./pollimgbox --> <ul class="pollactions group"> <li><a href="https://itunes.apple.com/app/polar/id563322683?ls=1&mt=8"><span class="pollcomment"></span>Comment</a></li> <li class="pollactionslast"><a href="/110180"><span class="pollresults"></span>Share</a></li> </ul> <ul class="pollcomments group"> <li><strong>blittle202</strong> <a class="" href="/polls/tags/emojis" title="#emojis">#emojis</a></li> <li><strong>tylermeca</strong> Could be both</li> <li><strong>blittle202</strong> Yes but what do you think it is</li> </ul> </div><!-- end ./pollbox-wrap --> </li> <li id="poll-100608" class="pollbox"> <div class="pollbox-wrap"> <div class="polltop"> <cite><a href="/users/emily20soccer">emily20soccer</a> Asks</cite> <a href="/users/emily20soccer"><img src="http://avatars-polarb-com.a.ssl.fastly.net/000/018/308/18308-small_retina-37f97ab5be3b047c.jpg" border="0" /></a> <h2 class="poll-question"><a href="/100608">Do You Love Emoji? If So Comment Your Fav Below!</a></h2> </div> <div class="pollvotesbox"> <span class="pollor">Or</span> <ul class="pollvotes"> <li class="polloption polloption1" data-choice="1" data-pollid="100608">Yes</li> <li class="polloption polloption2" data-choice="2" data-pollid="100608">No</li> </ul> <span class="pollleft"></span> <span class="pollright"></span> </div><!-- end ./pollvotesbox --> <div class="pollimgbox"> <ul class="pollimgvotes"> <li> <a class="pollimgvote pollimgvote1" data-choice="1" data-pollid="100608"></a> <div class="pollimgresult pollimgresult1" data-choice="1" data-pollid="100608"><span class="votecount1" style="">63</span></div> </li> <li> <a class="pollimgvote pollimgvote2" data-choice="2" data-pollid="100608"></a> <div class="pollimgresult pollimgresult2" data-choice="2" data-pollid="100608"><span class="votecount2" style="">25</span></div> </li> </ul> <img src="http://polls-polarb-com.a.ssl.fastly.net/000/100/608/100608-1-large-ac7c780039a18f75.jpg" alt="Do You Love Emoji? If So Comment Your Fav Below!"> </div><!-- end ./pollimgbox --> <ul class="pollactions group"> <li><a href="https://itunes.apple.com/app/polar/id563322683?ls=1&mt=8"><span class="pollcomment"></span>Comment</a></li> <li class="pollactionslast"><a href="/100608"><span class="pollresults"></span>Share</a></li> </ul> <ul class="pollcomments group"> <li><strong>bulbie</strong> ๐ฑ๐ฑ๐ฑ๐ฑ๐ฑ๐ฑ๐ฑ๐ฑ๐ฑ๐ฑ๐ฑ</li> <li><strong>MineCraftWes</strong> <img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/high_voltage_sign.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/smile.png">โพ<img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/dog_face.png">๐๐<img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/pistol.png">๐ฃ๐พ<img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/video_game.png">๐บ๐ธ<img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/Leo.png"></li> <li><strong>itjennytime</strong> ๐๐โพ<img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/microphone.png">๐ผ๐ฌ๐ท<img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/video_game.png">๐ธ</li> <li><a href="/100608">See more</a></li> </ul> </div><!-- end ./pollbox-wrap --> </li> <li id="poll-98033" class="pollbox"> <div class="pollbox-wrap"> <div class="polltop"> <cite><a href="/users/one_direction">one_direction</a> Asks</cite> <a href="/users/one_direction"><img src="http://avatars-polarb-com.a.ssl.fastly.net/000/016/614/16614-small_retina-e6795a71ebd97a21.jpg" border="0" /></a> <h2 class="poll-question"><a href="/98033">Do U Use Emojis?</a></h2> </div> <div class="pollvotesbox"> <span class="pollor">Or</span> <ul class="pollvotes"> <li class="polloption polloption1" data-choice="1" data-pollid="98033">Yes</li> <li class="polloption polloption2" data-choice="2" data-pollid="98033">No</li> </ul> <span class="pollleft"></span> <span class="pollright"></span> </div><!-- end ./pollvotesbox --> <div class="pollimgbox"> <ul class="pollimgvotes"> <li> <a class="pollimgvote pollimgvote1" data-choice="1" data-pollid="98033"></a> <div class="pollimgresult pollimgresult1" data-choice="1" data-pollid="98033"><span class="votecount1" style="">86</span></div> </li> <li> <a class="pollimgvote pollimgvote2" data-choice="2" data-pollid="98033"></a> <div class="pollimgresult pollimgresult2" data-choice="2" data-pollid="98033"><span class="votecount2" style="">23</span></div> </li> </ul> <img src="http://polls-polarb-com.a.ssl.fastly.net/000/098/033/98033-1-large-a7224fdd495cd33d.jpg" alt="Do U Use Emojis?"> </div><!-- end ./pollimgbox --> <ul class="pollactions group"> <li><a href="https://itunes.apple.com/app/polar/id563322683?ls=1&mt=8"><span class="pollcomment"></span>Comment</a></li> <li class="pollactionslast"><a href="/98033"><span class="pollresults"></span>Share</a></li> </ul> <ul class="pollcomments group"> <li><strong>fashionista</strong> ๐ฉ๐ช1โฃ2โฃ3โฃ4โฃ5โฃ6โฃ7โฃ8โฃ9โฃ0โฃ#โฃโฌโฌโฌ โกโโโโโโถโชโฉ๐๐๐๐๐๐ฆ๐๐ถ๐ต๐ณ๐๐น๐ฏ๐บ๐ถ๐๐ท๐ธ๐๐ป<img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/mens_symbol.png">๐บ๐ผ๐ญ๐ ฟ<img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/wheelchair.png">๐๐พ<img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/circled_ideograph_secret.png">ใ<img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/no_one_under_eighteen_symbol.png">๐โณโด๐๐๐ณ๐ด๐น๐ฑ<img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/Aries.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/Taurus.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/Gemini.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/Cancer.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/Leo.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/Virgo.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/Libra.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/Scorpius.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/Sagittarius.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/Capricorn.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/Aquarius.png"><img class="emoji" src="http://assets-polarb-com.a.ssl.fastly.net/assets/emoji/Pisces.png">โ๐ฏ๐ ฐ๐ ฑ๐๐ พ๐ฒ๐ด</li> <li><strong>fashionista</strong> ๐๐๐๐๐๐๐๐๐๐๐๐โญโยฉยฎโข</li> <li><strong>Ricky-el</strong> <a class="" href="/users/fashionista">@fashionista</a> you flood all polar lol</li> <li><a href="/98033">See more</a></li> </ul> </div><!-- end ./pollbox-wrap --> </li> <li id="no-polls-img" class="no-polls" style="display: none;"><h4>Eek! You caught me with no Polls on.</h4><p id="no-polls-msg">Be a dear and find some polls in the search box for me?</p></li> <li class="to-top"> <p class="to-top-button polls-last"><a href="">top</a></p> </li> </ul> </div> <!-- end --> </section> </div></div> <!-- #main-container -->' | |
} | |
%w(small medium large).each do |example_size| | |
puts "==========================================" | |
puts "#{example_size.capitalize} Example String" | |
puts "==========================================" | |
Benchmark.bmbm do |bm| | |
bm.report('EscapeUtils.escape_html') { 1000.times { EscapeUtils.escape_html(examples[example_size]) } } | |
bm.report('CGI.escape_html') { 1000.times { CGI.escape_html(examples[example_size]) } } | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[feature/escape_utils ~/src/emoji]$> b ruby ./escape_utils_bench.rb | |
========================================== | |
Small Example String | |
========================================== | |
Rehearsal ----------------------------------------------------------- | |
EscapeUtils.escape_html 0.000000 0.000000 0.000000 ( 0.000887) | |
CGI.escape_html 0.010000 0.000000 0.010000 ( 0.007886) | |
-------------------------------------------------- total: 0.010000sec | |
user system total real | |
EscapeUtils.escape_html 0.000000 0.000000 0.000000 ( 0.000906) | |
CGI.escape_html 0.000000 0.000000 0.000000 ( 0.003874) | |
========================================== | |
Medium Example String | |
========================================== | |
Rehearsal ----------------------------------------------------------- | |
EscapeUtils.escape_html 0.010000 0.000000 0.010000 ( 0.006916) | |
CGI.escape_html 0.090000 0.000000 0.090000 ( 0.092979) | |
-------------------------------------------------- total: 0.100000sec | |
user system total real | |
EscapeUtils.escape_html 0.000000 0.000000 0.000000 ( 0.006635) | |
CGI.escape_html 0.080000 0.000000 0.080000 ( 0.088211) | |
========================================== | |
Large Example String | |
========================================== | |
Rehearsal ----------------------------------------------------------- | |
EscapeUtils.escape_html 0.090000 0.010000 0.100000 ( 0.094692) | |
CGI.escape_html 1.110000 0.000000 1.110000 ( 1.118752) | |
-------------------------------------------------- total: 1.210000sec | |
user system total real | |
EscapeUtils.escape_html 0.080000 0.010000 0.090000 ( 0.090249) | |
CGI.escape_html 1.090000 0.000000 1.090000 ( 1.099880) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment