benchmark.dart 1.4 KB

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