diff --git a/libraries/AP_Math/benchmarks/benchmark_geodesic_grid.cpp b/libraries/AP_Math/benchmarks/benchmark_geodesic_grid.cpp
new file mode 100644
index 0000000000..5290c45a2e
--- /dev/null
+++ b/libraries/AP_Math/benchmarks/benchmark_geodesic_grid.cpp
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2016 Intel Corporation. All rights reserved.
+ *
+ * This file is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+#include
+
+#include
+
+static AP_GeodesicGrid grid;
+
+static void BM_GeodesicGridSections(benchmark::State& state)
+{
+ Vector3f v, a, b, c;
+ int section = state.range_x();
+
+ grid.section_triangle(section, a, b, c);
+ v = (a + b + c) / 3.0f;
+
+ while (state.KeepRunning()) {
+ int s = grid.section(v);
+ gbenchmark_escape(&s);
+ }
+}
+
+/* Benchmark each section */
+BENCHMARK(BM_GeodesicGridSections)->DenseRange(0, 79);
+
+BENCHMARK_MAIN()