Use |charAt| instead of |substr| when matching classes

Speed impact
------------
Before:     131.36 kB/s
After:      213.59 kB/s
Difference: 62.59%

Size impact
-----------
Before:     1056976 b
After:      1056976 b
Difference: 0.00%

(Measured by /tools/impact with Node.js v0.4.8 on x86_64 GNU/Linux.)

Closes GH-49.
redux
David Majda 13 years ago
parent 0a1cea5f12
commit d3aff0c66a

@ -753,7 +753,7 @@ PEG.compiler.emitter = function(ast) {
} }
return formatCode( return formatCode(
"if (${regexp}.test(input.substr(pos))) {", "if (${regexp}.test(input.charAt(pos))) {",
" ${resultVar} = input.charAt(pos);", " ${resultVar} = input.charAt(pos);",
" pos++;", " pos++;",
"} else {", "} else {",

@ -1123,7 +1123,7 @@ PEG.parser = (function(){
var pos0; var pos0;
if (/^[^{}]/.test(input.substr(pos))) { if (/^[^{}]/.test(input.charAt(pos))) {
result0 = input.charAt(pos); result0 = input.charAt(pos);
pos++; pos++;
} else { } else {
@ -3023,7 +3023,7 @@ PEG.parser = (function(){
var pos0; var pos0;
if (/^[0-9]/.test(input.substr(pos))) { if (/^[0-9]/.test(input.charAt(pos))) {
result0 = input.charAt(pos); result0 = input.charAt(pos);
pos++; pos++;
} else { } else {
@ -3054,7 +3054,7 @@ PEG.parser = (function(){
var pos0; var pos0;
if (/^[0-9a-fA-F]/.test(input.substr(pos))) { if (/^[0-9a-fA-F]/.test(input.charAt(pos))) {
result0 = input.charAt(pos); result0 = input.charAt(pos);
pos++; pos++;
} else { } else {
@ -3112,7 +3112,7 @@ PEG.parser = (function(){
var pos0; var pos0;
if (/^[a-z]/.test(input.substr(pos))) { if (/^[a-z]/.test(input.charAt(pos))) {
result0 = input.charAt(pos); result0 = input.charAt(pos);
pos++; pos++;
} else { } else {
@ -3143,7 +3143,7 @@ PEG.parser = (function(){
var pos0; var pos0;
if (/^[A-Z]/.test(input.substr(pos))) { if (/^[A-Z]/.test(input.charAt(pos))) {
result0 = input.charAt(pos); result0 = input.charAt(pos);
pos++; pos++;
} else { } else {
@ -3571,7 +3571,7 @@ PEG.parser = (function(){
var pos0; var pos0;
if (/^[\n\r\u2028\u2029]/.test(input.substr(pos))) { if (/^[\n\r\u2028\u2029]/.test(input.charAt(pos))) {
result0 = input.charAt(pos); result0 = input.charAt(pos);
pos++; pos++;
} else { } else {
@ -3602,7 +3602,7 @@ PEG.parser = (function(){
var pos0; var pos0;
reportFailures++; reportFailures++;
if (/^[ \xA0\uFEFF\u1680\u180E\u2000-\u200A\u202F\u205F\u3000]/.test(input.substr(pos))) { if (/^[ \xA0\uFEFF\u1680\u180E\u2000-\u200A\u202F\u205F\u3000]/.test(input.charAt(pos))) {
result0 = input.charAt(pos); result0 = input.charAt(pos);
pos++; pos++;
} else { } else {

Loading…
Cancel
Save