benchmark.dart 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import 'package:xterm/xterm.dart';
  2. void main() {
  3. BenchmarkWrite().run();
  4. BenchmarkWriteBuffer().run();
  5. }
  6. abstract class Benchmark {
  7. String explain();
  8. void benchmark();
  9. void run() {
  10. print('benchmark: ${explain()}');
  11. print('preheating...');
  12. benchmark();
  13. final sw = Stopwatch()..start();
  14. print('running...');
  15. benchmark();
  16. sw.stop();
  17. print('result: ${sw.elapsedMilliseconds} ms');
  18. }
  19. }
  20. class BenchmarkWrite extends Benchmark {
  21. static const cycle = 1 << 20;
  22. static const data = 'hello world';
  23. String explain() {
  24. return "write '$data' to Terminal for $cycle times";
  25. }
  26. void benchmark() {
  27. final terminal = Terminal();
  28. for (var i = 0; i < cycle; i++) {
  29. terminal.write(data);
  30. }
  31. }
  32. }
  33. class BenchmarkWriteBuffer extends Benchmark {
  34. static const cycle = 1 << 20;
  35. static const data = 'hello world';
  36. String explain() {
  37. return "write '$data' to StringBuffer for $cycle times";
  38. }
  39. void benchmark() {
  40. final buffer = StringBuffer();
  41. for (var i = 0; i < cycle; i++) {
  42. buffer.write(data);
  43. }
  44. }
  45. }