OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 #library('node_scanner_bench'); | |
6 #import('../../lib/node/node.dart'); | |
7 #import('scannerlib.dart'); | |
8 #import('scanner_implementation.dart'); | |
9 #import('scanner_bench.dart'); | |
10 #import('../../../lib/utf/utf.dart'); | |
11 #source('byte_strings.dart'); | |
12 #source('byte_array_scanner.dart'); | |
13 | |
14 class NodeScannerBench extends ScannerBench { | |
15 int getBytes(String filename, void callback(bytes)) { | |
16 // This actually returns a buffer, not a String. | |
17 var s = fs.readFileSync(filename, null); | |
18 callback(s); | |
19 return s.length; | |
20 } | |
21 | |
22 Scanner makeScanner(bytes) => new InflexibleByteArrayScanner(bytes); | |
23 | |
24 void checkExistence(String filename) { | |
25 if (!path.existsSync(filename)) { | |
26 throw "no such file: ${filename}"; | |
27 } | |
28 } | |
29 } | |
30 | |
31 class InflexibleByteArrayScanner extends ByteArrayScanner { | |
32 InflexibleByteArrayScanner(List<int> bytes) : super(bytes); | |
33 | |
34 int byteAt(int index) => (bytes.length > index) ? bytes[index] : $EOF; | |
35 | |
36 int advance() { | |
37 // This method should be equivalent to the one in super. However, | |
38 // this is a *HOT* method and V8 performs better if it is easy to | |
39 // inline. | |
40 int index = ++byteOffset; | |
41 int next = (bytes.length > index) ? bytes[index] : $EOF; | |
42 return next; | |
43 } | |
44 } | |
45 | |
46 main() { | |
47 new NodeScannerBench().main(argv); | |
48 } | |
OLD | NEW |