diff --git a/.gitignore b/.gitignore
index 91a0d5a..f2eb48a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
 Sandbox
 examples
 benchmark
+benchmark.csv
 docs
 todo.org
 tools
diff --git a/Changes b/Changes
index 5f5b710..267bf0c 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,4 @@
-0.39 2020-02-11
+0.39 2020-02-19
         - Added Talismane support.
         - Added "distributor" field to I5 metadata.
         - Added DGD link field to I5 metadata.
@@ -9,6 +9,7 @@
         - Fixed parsing of editionStmt.
         - Added documentation for supported I5 metadata
           fields.
+        - Added integrated benchmark mechanism.
 
 0.38 2019-05-22
         - Stop file processing when base tokenization
diff --git a/Makefile.PL b/Makefile.PL
index 370a0ae..6d61c3f 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -27,6 +27,7 @@
     'IO::Dir::Recursive' => 0.03,
     'File::Temp'      => 0,
     'Directory::Iterator' => 0,
+    'Dumbbench'       => '0.111',
     'Benchmark'       => 0,
     'Unicode::Normalize' => 0,
     'Carp'            => 0,
diff --git a/xt/benchmark.pl b/xt/benchmark.pl
new file mode 100644
index 0000000..f7d0cb0
--- /dev/null
+++ b/xt/benchmark.pl
@@ -0,0 +1,87 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Dumbbench;
+use File::Basename 'dirname';
+use File::Spec::Functions qw/catfile catdir rel2abs/;
+use File::Temp ':POSIX';
+use FindBin;
+use Getopt::Long;
+
+BEGIN {
+  unshift @INC, "$FindBin::Bin/../lib";
+};
+
+my $columns = 0;
+my $no_header = 0;
+GetOptions(
+  'columns|c' => \$columns,
+  'no-header|n' => \$no_header,
+  'help|h' => sub {
+    print "--columns|-c     Print instances in columns\n";
+    print "--no-header|-n   Dismiss benchmark names\n";
+    print "--help|-h        Print this page\n\n";
+    exit(0);
+  }
+);
+
+our $SCRIPT_NAME = 'korapxml2krill';
+
+my $f = dirname(__FILE__);
+my $script = rel2abs(catfile($f, '..', 'script', $SCRIPT_NAME));
+
+
+# begin instance 1 setup
+# Load example file
+my $input = rel2abs(catdir($f, '..', 't', 'annotation', 'corpus', 'doc', '0001'));
+my $output = tmpnam();
+my $cache = tmpnam();
+# end instance 1
+
+# Create a new benchmark object
+my $bench = Dumbbench->new(
+  verbosity => 0
+);
+
+# Add benchmark instances
+$bench->add_instances(
+  Dumbbench::Instance::PerlSub->new(
+    name => 'ExampleRun 1',
+    code => sub {
+      my $cmd = join(
+        ' ',
+        'perl', $script,
+        '--input' => $input,
+        '--output' => $output,
+        '--cache' => $cache,
+        '-k' => '0.03',
+        '-t' => 'OpenNLP#Tokens',
+        '-l' => 'ERROR',
+        '>' => '/dev/null'
+      );
+      `$cmd`;
+    }
+  )
+);
+
+# Run benchmarks
+$bench->run;
+
+# Output in a single row
+if ($columns) {
+  unless ($no_header) {
+    print join("\t", map { $_->name } $bench->instances), "\n";
+  };
+  print join("\t", map { $_->single_run } $bench->instances), "\n";
+  exit(0);
+};
+
+# Output simple timings for comparation
+foreach my $inst ($bench->instances) {
+  unless ($no_header) {
+    print $inst->name, ': ';
+  };
+  print $inst->single_run, "\n";
+};
+
+exit(0);
