From ae8be929acd3f8c0682bd6e12c178fc698540a7d Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Sun, 5 Jan 2014 14:04:56 +0100 Subject: [PATCH] perf(parser): Faster character tests. Performance =========== lexer_perf: Dart VM - Old: ident: => 1,182,988 ops/sec (1 us) stdev(0.1318) ident-path: => 1,805,782 ops/sec (1 us) stdev(0.26363) num: => 1,269,793 ops/sec (1 us) stdev(0.17873) num-double: => 760,554 ops/sec (1 us) stdev(0.13409) string: => 1,968,371 ops/sec (1 us) stdev(0.20383) string-escapes: => 607,930 ops/sec (2 us) stdev(0.08734) Dart VM - New: ident: => 2,068,501 ops/sec (0 us) stdev(0.05876) ident-path: => 3,234,291 ops/sec (0 us) stdev(0.09304) num: => 1,972,071 ops/sec (1 us) stdev(0.16793) num-double: => 953,725 ops/sec (1 us) stdev(0.022) string: => 2,108,910 ops/sec (0 us) stdev(0.08699) string-escapes: => 712,866 ops/sec (1 us) stdev(0.02661) --- lib/core/parser/characters.dart | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/core/parser/characters.dart b/lib/core/parser/characters.dart index 7213d278f..00a0cccdf 100644 --- a/lib/core/parser/characters.dart +++ b/lib/core/parser/characters.dart @@ -98,12 +98,7 @@ const int $TILDE = 126; const int $NBSP = 160; bool isWhitespace(int code) { - return (code == $SPACE) - || (code == $CR) - || (code == $LF) - || (code == $NBSP) - || (code == $TAB) - || (code == $VTAB); + return (code >= $TAB && code <= $SPACE) || (code == $NBSP); } bool isIdentifierStart(int code) { @@ -134,6 +129,7 @@ bool isExponentSign(int code) { } int unescape(int code) { + if (code & 1 == 1 || code < $f || code > $v) return code; Map escapes = const { $n: $LF, $f: $FF,