Escape-Houdini
view release on metacpan or search on metacpan
contrib/benchmark.pl view on Meta::CPAN
my $uri =
"http://babyl.ca/mailman/admin/banana/members/add?foo=bar&baz=nar";
cmpthese( -10, {
"houdini escape_html" => sub { bench_houdini_escape_url($uri) },
"URI::Escape::XS uri_escape" => sub { bench_uri_escape($uri) },
});
}
{
say my $input = "<hello>world</hello>";
cmpthese( -10, {
"houdini escape_html" => sub { bench_houdini_escape_html($input) },
"HTML::Escape escape_html" => sub { bench_html_escape($input) },
});
}
my $input = do { local $/ = <DATA> };
say "random webpage";
say "escape_html(random webpage)";
cmpthese( -10, {
"houdini escape_html" => sub { bench_houdini_escape_html($input) },
"HTML::Escape escape_html" => sub { bench_html_escape($input) },
});
sub bench_houdini_escape_html {
my $escaped = Escape::Houdini::escape_html($_[0]);
}
sub bench_html_escape {
my $escaped = HTML::Escape::escape_html($_[0]);
}
sub bench_houdini_escape_url {
my $escaped = Escape::Houdini::escape_url($_[0]);
}
sub bench_houdini_unescape_url {
my $escaped = Escape::Houdini::unescape_url($_[0]);
}
sub bench_uri_escape {
my $escaped = URI::Escape::XS::uri_escape($_[0]);
}
sub bench_uri_unescape {
my $escaped = URI::Escape::XS::uri_unescape($_[0]);
}
__DATA__
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Hacking Thy Fearful Symmetry - MetaCPAN JavaScript API</title>
<link rel="shortcut icon" href="http://babyl.ca/techblog/static/favicon.png?v=0.6.0" />
<link rel="alternate"
type="application/atom+xml"
title="Recent Entries"
href="http://babyl.ca/techblog/atom.xml" />
<link rel="stylesheet" type="text/css" href="http://babyl.ca/techblog/css/galuga.css" />
<style type="text/css">
</style>
<script type="text/javascript"
src="http://babyl.ca/techblog/static/jquery/jquery-1.5.1.min.js?v=0.6.0"></script>
<script type="text/javascript"
src="http://babyl.ca/techblog/static/jquery/tagcloud/scripts/jquery.tagcloud.min.js?v=0.6.0">
</script>
<!-- Include required JS files -->
<script type="text/javascript" src="http://babyl.ca/techblog/static/syntax_highlight/scripts/shCore.js?v=0.6.0"></script>
<script type="text/javascript" src="http://babyl.ca/techblog/static/syntax_highlight/scripts/shBrushPerl.js?v=0.6.0"></script>
<!-- Include *at least* the core style and default theme -->
<link href="http://babyl.ca/techblog/static/syntax_highlight/styles/shCore.css?v=0.6.0" rel="stylesheet" type="text/css" />
<link href="http://babyl.ca/techblog/static/syntax_highlight/styles/shThemeDefault.css?v=0.6.0" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="header">
<div class="header-inner">
<h1><a href="http://babyl.ca/techblog/">Hacking Thy Fearful Symmetry</a></h1>
<div class="tagline">Hacker, hacker coding bright.</div>
</div>
</div>
<div class="main_body">
<div class="left_column">
<div class="widget">
<h3>Recent entries</h3>
<ul>
<li>
<a href="http://babyl.ca/techblog/entry/metacpan-js">MetaCPAN JavaScript API</a>
</li>
<li>
<a href="http://babyl.ca/techblog/entry/flattr">Flattr your CPAN Stack</a>
</li>
( run in 1.199 second using v1.01-cache-2.11-cpan-39bf76dae61 )