- Add VariableSpec class with magnitude field validation - Add Formula class supporting multiple input/output variables - Support d4rt_code as string or object with code field - Add comprehensive tests for parsing and serialization - Fix broken test import in pruebas_d4rt_test.dart Follows README.md format requirements exactly
118 lines
3.3 KiB
Dart
118 lines
3.3 KiB
Dart
import 'dart:typed_data';
|
|
|
|
import 'package:_fe_analyzer_shared/src/scanner/scanner.dart' as fasta;
|
|
|
|
import 'file:/Users/scheglov/Source/Dart/sdk.git/sdk/pkg/analysis_server/tool/code_completion/benchmark/sliding_statistics.dart';
|
|
|
|
void main() {
|
|
var contents0 = r'''
|
|
void main() {
|
|
print(12345);
|
|
}
|
|
''';
|
|
|
|
var contents = contents0 * 3125 * 10;
|
|
|
|
// var contentBytes = Uint8List.fromList(contents.codeUnits);
|
|
var contentBytes = Uint8List(contents.length + 1);
|
|
contentBytes.setRange(0, contents.length, contents.codeUnits);
|
|
|
|
var statistics = SlidingStatistics(100);
|
|
|
|
while (true) {
|
|
print('[length0: ${contents0.length}]');
|
|
print('[length: ${contents.length}]');
|
|
var timer = Stopwatch()..start();
|
|
_doScan(contents, contentBytes);
|
|
timer.stop();
|
|
|
|
var responseTime = timer.elapsedMicroseconds;
|
|
statistics.add(responseTime);
|
|
if (statistics.isReady) {
|
|
print(
|
|
'[${DateTime.now().millisecondsSinceEpoch}]'
|
|
'[time: $responseTime mcs][mean: ${statistics.mean.toStringAsFixed(1)}]'
|
|
'[stdDev: ${statistics.standardDeviation.toStringAsFixed(3)}]'
|
|
'[min: ${statistics.min.toStringAsFixed(1)}]'
|
|
'[max: ${statistics.max.toStringAsFixed(1)}]',
|
|
);
|
|
} else {
|
|
print('[time: $responseTime mcs]');
|
|
}
|
|
}
|
|
}
|
|
|
|
void _doScan(String contents, Uint8List contentBytes) {
|
|
fasta.scan(
|
|
contentBytes,
|
|
configuration: fasta.ScannerConfiguration(
|
|
enableTripleShift: true,
|
|
forAugmentationLibrary: true,
|
|
),
|
|
includeComments: true,
|
|
languageVersionChanged: (scanner, languageVersion) {},
|
|
);
|
|
|
|
// fasta.ScannerResult result = fasta.scanString(
|
|
// contents,
|
|
// configuration: fasta.ScannerConfiguration(
|
|
// enableExtensionMethods: true,
|
|
// enableTripleShift: true,
|
|
// enableNonNullable: true,
|
|
// forAugmentationLibrary: true,
|
|
// ),
|
|
// includeComments: true,
|
|
// languageVersionChanged: (scanner, languageVersion) {},
|
|
// );
|
|
|
|
// var errorListener = RecordingErrorListener();
|
|
// var scanner = Scanner.fasta(
|
|
// _Source(),
|
|
// errorListener,
|
|
// contents: contents,
|
|
// );
|
|
// var featureSet = FeatureSet.latestLanguageVersion();
|
|
// scanner.configureFeatures(
|
|
// featureSetForOverriding: featureSet,
|
|
// featureSet: featureSet,
|
|
// );
|
|
// var first = scanner.tokenize();
|
|
|
|
// for (Token? token = first; token != null; token = token.next) {
|
|
// print('[offset: ${token.offset}][kind: ${token.kind}][${token.lexeme}]');
|
|
// if (token.isEof) {
|
|
// break;
|
|
// }
|
|
// }
|
|
}
|
|
|
|
// void _doScan(String contents) {
|
|
// var errorListener = RecordingErrorListener();
|
|
//
|
|
// var scanner = Scanner.fasta(
|
|
// _Source(),
|
|
// errorListener,
|
|
// contents: contents,
|
|
// );
|
|
// var featureSet = FeatureSet.latestLanguageVersion();
|
|
// scanner.configureFeatures(
|
|
// featureSetForOverriding: featureSet,
|
|
// featureSet: featureSet,
|
|
// );
|
|
//
|
|
// var first = scanner.tokenize();
|
|
//
|
|
// // for (Token? token = first; token != null; token = token.next) {
|
|
// // print('[offset: ${token.offset}][kind: ${token.kind}][${token.lexeme}]');
|
|
// // if (token.isEof) {
|
|
// // break;
|
|
// // }
|
|
// // }
|
|
// }
|
|
|
|
// class _Source implements Source {
|
|
// @override
|
|
// dynamic noSuchMethod(Invocation invocation) {
|
|
// return super.noSuchMethod(invocation);
|
|
// }
|
|
// }
|