<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
article, aside, figure, footer, header, hgroup,
menu, nav, section { display: block; }
</style>
</head>
<body>
<p id="hello">HTML Special Chars Speed Test</p>
<p>Written by <a href="http://www.twitter.com/xjamundx">Jamund Ferguson</a> and <a href="http://www.twitter.com/Rob__ot">Rob Middleton</a></p>
<pre>
// add object.keys support
if(!Object.keys) Object.keys = function(o){var ret=[],p;
for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
return ret;
}
var htmlspecialchars1 = (function() {
var specialChars = {
"&":"&",
"é":"é",
"©":"©",
"ñ":"ñ",
"æ":"æ",
"Æ":"Æ",
"¿":"¿",
"£":"£",
"¢":"¢",
"®":"®"
},
regexes = [],
i;
// pre-compile the regexes
for (var html in specialChars) {
var regex = new RegExp(html, 'g');
regexes.push({regex: regex, char: specialChars[html]});
}
return function(str) {
for (var regex in regexes) {
str = str.replace(regex.regex, regex.char);
}
return str;
}
})();
var htmlspecialchars2 = (function() {
var specialChars = {
"&":"&",
"é":"é",
"©":"©",
"ñ":"ñ",
"æ":"æ",
"Æ":"Æ",
"¿":"¿",
"£":"£",
"¢":"¢",
"®":"®"
},
inside = Object.keys(specialChars).join("|"),
regex = new RegExp(inside, 'g');
return function(str) {
return str.replace(regex, function(html) {
return specialChars[html];
});
}
})();
var str = "The brown cat is a freaky Bat©. His fiancé lives in a hat & his brother.";
console.log("Timing our first one:");
var time = new Date().getTime();
for (var i = 0; i < 1000000; i++) {
var x = htmlspecialchars1(str);
}
console.log("htmlspecialchars1: " + (new Date().getTime() - time) + "ms");
console.log("Timing our second one:");
var time2 = new Date().getTime();
for (var i = 0; i < 1000000; i++) {
var x = htmlspecialchars2(str);
}
console.log("htmlspecialchars2: " + (new Date().getTime() - time2) + "ms");
</pre>
</body>
</html>
Output
300px
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |