diff --git a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
index 4964216..e96f58b 100644
--- a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
+++ b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
@@ -119,4 +119,44 @@
         bundle.putInt("avf_perf/microdroid/minimum_required_memory", minimum);
         mInstrumentation.sendStatus(0, bundle);
     }
+
+    @Test
+    public void testMicrodroidBootTime()
+            throws VirtualMachineException, InterruptedException, IOException {
+        assume().withMessage("Skip on CF; too slow").that(isCuttlefish()).isFalse();
+
+        final int trialCount = 10;
+
+        double sum = 0;
+        double squareSum = 0;
+        double min = Double.MAX_VALUE;
+        double max = Double.MIN_VALUE;
+        for (int i = 0; i < trialCount; i++) {
+            VirtualMachineConfig.Builder builder =
+                    mInner.newVmConfigBuilder("assets/vm_config.json");
+            VirtualMachineConfig normalConfig =
+                    builder.debugLevel(DebugLevel.NONE).memoryMib(256).build();
+            mInner.forceCreateNewVirtualMachine("test_vm_boot_time", normalConfig);
+
+            BootResult result = tryBootVm(TAG, "test_vm_boot_time");
+            assertThat(result.payloadStarted).isTrue();
+
+            double elapsedMilliseconds = result.elapsedNanoTime / 1000000.0;
+
+            sum += elapsedMilliseconds;
+            squareSum += elapsedMilliseconds * elapsedMilliseconds;
+            if (min > elapsedMilliseconds) min = elapsedMilliseconds;
+            if (max < elapsedMilliseconds) max = elapsedMilliseconds;
+        }
+
+        Bundle bundle = new Bundle();
+        double average = sum / trialCount;
+        double variance = squareSum / trialCount - average * average;
+        double stdev = Math.sqrt(variance);
+        bundle.putDouble("avf_perf/microdroid/boot_time_average_ms", average);
+        bundle.putDouble("avf_perf/microdroid/boot_time_min_ms", min);
+        bundle.putDouble("avf_perf/microdroid/boot_time_max_ms", max);
+        bundle.putDouble("avf_perf/microdroid/boot_time_stdev_ms", stdev);
+        mInstrumentation.sendStatus(0, bundle);
+    }
 }
diff --git a/tests/helper/src/java/com/android/microdroid/test/MicrodroidDeviceTestBase.java b/tests/helper/src/java/com/android/microdroid/test/MicrodroidDeviceTestBase.java
index b4c814b..87c53a7 100644
--- a/tests/helper/src/java/com/android/microdroid/test/MicrodroidDeviceTestBase.java
+++ b/tests/helper/src/java/com/android/microdroid/test/MicrodroidDeviceTestBase.java
@@ -185,10 +185,12 @@
     public static class BootResult {
         public final boolean payloadStarted;
         public final int deathReason;
+        public final long elapsedNanoTime;
 
-        BootResult(boolean payloadStarted, int deathReason) {
+        BootResult(boolean payloadStarted, int deathReason, long elapsedNanoTime) {
             this.payloadStarted = payloadStarted;
             this.deathReason = deathReason;
+            this.elapsedNanoTime = elapsedNanoTime;
         }
     }
 
@@ -197,10 +199,12 @@
         VirtualMachine vm = mInner.getVirtualMachineManager().get(vmName);
         final CompletableFuture<Boolean> payloadStarted = new CompletableFuture<>();
         final CompletableFuture<Integer> deathReason = new CompletableFuture<>();
+        final CompletableFuture<Long> endTime = new CompletableFuture<>();
         VmEventListener listener =
                 new VmEventListener() {
                     @Override
                     public void onPayloadStarted(VirtualMachine vm, ParcelFileDescriptor stream) {
+                        endTime.complete(System.nanoTime());
                         payloadStarted.complete(true);
                         forceStop(vm);
                     }
@@ -211,8 +215,11 @@
                         super.onDied(vm, reason);
                     }
                 };
+        long beginTime = System.nanoTime();
         listener.runToFinish(logTag, vm);
         return new BootResult(
-                payloadStarted.getNow(false), deathReason.getNow(DeathReason.INFRASTRUCTURE_ERROR));
+                payloadStarted.getNow(false),
+                deathReason.getNow(DeathReason.INFRASTRUCTURE_ERROR),
+                endTime.getNow(beginTime) - beginTime);
     }
 }
