big speed improvement (observable when beautify = false)

who would have thought that str.charAt(str.length - 1) is not a constant,
instant operation?  seems to get slower and slower as the string grows.

0.6s vs. 3s
This commit is contained in:
Mihai Bazon
2012-08-17 19:04:23 +03:00
parent 901f77047e
commit ef87c9fd8f

View File

@@ -68,22 +68,21 @@ function OutputStream(options) {
return repeat_string(" ", options.indent_start + indentation - back * options.indent_level);
};
function last_char() {
return OUTPUT.charAt(OUTPUT.length - 1);
};
/* -----[ beautification/minification ]----- */
var might_need_space = false;
var might_need_semicolon = false;
var last = null;
function last_char() {
return last.charAt(last.length - 1);
};
function print(str) {
last = str;
str = String(str);
var ch = str.charAt(0);
if (might_need_semicolon) {
if (";}".indexOf(ch) < 0 && !/[;]$/.test(OUTPUT)) {
if (";}".indexOf(ch) < 0 && !/[;]$/.test(last)) {
OUTPUT += ";";
current_col++;
current_pos++;
@@ -96,7 +95,7 @@ function OutputStream(options) {
if ((is_identifier_char(last_char())
&& (is_identifier_char(ch) || ch == "\\"))
||
(/[\+\-]$/.test(OUTPUT) && /^[\+\-]/.test(str)))
(/[\+\-]$/.test(last) && /^[\+\-]/.test(str)))
{
OUTPUT += " ";
current_col++;
@@ -112,6 +111,7 @@ function OutputStream(options) {
current_col += a[n - 1].length;
}
current_pos += str.length;
last = str;
OUTPUT += str;
};
@@ -682,8 +682,9 @@ function OutputStream(options) {
output.print("]");
});
DEFPRINT(AST_UnaryPrefix, function(self, output){
output.print(self.operator);
if (is_alphanumeric_char(self.operator.charAt(0)))
var op = self.operator;
output.print(op);
if (/^[a-z]/i.test(op))
output.space();
self.expression.print(output);
});