|
@@ -0,0 +1,55 @@
|
|
|
|
|
+import 'package:xterm/xterm.dart';
|
|
|
|
|
+
|
|
|
|
|
+void main() {
|
|
|
|
|
+ BenchmarkWrite().run();
|
|
|
|
|
+ BenchmarkWriteBuffer().run();
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+abstract class Benchmark {
|
|
|
|
|
+ String explain();
|
|
|
|
|
+
|
|
|
|
|
+ void benchmark();
|
|
|
|
|
+
|
|
|
|
|
+ void run() {
|
|
|
|
|
+ print('benchmark: ${explain()}');
|
|
|
|
|
+ print('preheating...');
|
|
|
|
|
+ benchmark();
|
|
|
|
|
+ final sw = Stopwatch()..start();
|
|
|
|
|
+ print('running...');
|
|
|
|
|
+ benchmark();
|
|
|
|
|
+ sw.stop();
|
|
|
|
|
+ print('result: ${sw.elapsedMilliseconds} ms');
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+class BenchmarkWrite extends Benchmark {
|
|
|
|
|
+ static const cycle = 1 << 20;
|
|
|
|
|
+ static const data = 'hello world';
|
|
|
|
|
+
|
|
|
|
|
+ String explain() {
|
|
|
|
|
+ return "write '$data' to Terminal for $cycle times";
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void benchmark() {
|
|
|
|
|
+ final terminal = Terminal();
|
|
|
|
|
+ for (var i = 0; i < cycle; i++) {
|
|
|
|
|
+ terminal.write(data);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+class BenchmarkWriteBuffer extends Benchmark {
|
|
|
|
|
+ static const cycle = 1 << 20;
|
|
|
|
|
+ static const data = 'hello world';
|
|
|
|
|
+
|
|
|
|
|
+ String explain() {
|
|
|
|
|
+ return "write '$data' to StringBuffer for $cycle times";
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void benchmark() {
|
|
|
|
|
+ final buffer = StringBuffer();
|
|
|
|
|
+ for (var i = 0; i < cycle; i++) {
|
|
|
|
|
+ buffer.write(data);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|