Skip to content

Instantly share code, notes, and snippets.

@methane
Created April 12, 2012 17:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save methane/2369648 to your computer and use it in GitHub Desktop.
Save methane/2369648 to your computer and use it in GitHub Desktop.
<?php
$d = file_get_contents('index.html');
//$d = htmlspecialchars($d);
$d = strtr($d, array('&'=>'&amp;', '<'=>'&lt;', '>'=>'&gt;'));
for ($i =0; $i < 10000; ++$i) {
strtr($d, array('&amp;'=>'&', '&lt;'=>'<', '&gt;'=>'>'));
}
import re
def unescape_replace(s):
return s.replace('&lt;', '<').replace('&gt;', '>').replace('&amp;', '&')
def unescape_sub(s,
_sub=re.compile('&lt;|&gt;|&amp;').sub,
_d = {"&amp;": "&", "&gt;": ">", "&lt;": "<"}
):
return _sub(lambda m: _d[m.group()], s)
import cgi
d = cgi.escape(open('index.html').read())
assert unescape_replace(d) == unescape_sub(d)
N=10000
import timeit
print "replace", timeit.timeit(lambda: unescape_replace(d), number=N)
print "re.sub", timeit.timeit(lambda: unescape_sub(d), number=N)
"""
$ wget http://www.python.org/
$ python unescape.py
replace 2.49956488609
re.sub 7.33878493309
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment