Add simple benchmark
diff --git a/benchmark/read.dart b/benchmark/read.dart
new file mode 100644
index 0000000..aa516d1
--- /dev/null
+++ b/benchmark/read.dart
@@ -0,0 +1,44 @@
+import 'dart:io';
+import 'dart:typed_data';
+
+import 'package:tar/tar.dart';
+
+Future<void> main(List<String> args) async {
+ if (args.length != 1) {
+ print('Usage: dart run benchmark/list.dart <tar file>');
+ exit(1);
+ }
+
+ final file = File(args.single);
+
+ await _mark('Streaming', () => file.openRead());
+
+ final content = await file.readAsBytes();
+ await _mark('Single chunk', () => Stream.value(content));
+}
+
+Future<void> _mark(String desc, Stream<List<int>> Function() stream) async {
+ final timings = Int64List(50);
+ final stopwatch = Stopwatch();
+
+ for (var i = 0; i < timings.length; i++) {
+ stopwatch
+ ..reset()
+ ..start();
+
+ final reader = TarReader(stream());
+
+ while (await reader.moveNext()) {
+ final entry = reader.current;
+ // Make sure that we listen to the content stream
+ await entry.contents
+ .fold<int>(0, (previous, element) => previous + element.length);
+ }
+
+ timings[i] = stopwatch.elapsedMicroseconds;
+ }
+
+ timings.sort();
+
+ print('$desc: Took ${Duration(microseconds: timings[24])}');
+}