diff --git a/perf.R b/perf.R
new file mode 100644
index 0000000000000000000000000000000000000000..2dce9208149434acc2efc3d044e0ccaade9311d4
--- /dev/null
+++ b/perf.R
@@ -0,0 +1,74 @@
+library(microbenchmark)
+
+mb <- microbenchmark(
+  "load packages" = {
+    library(shinydashboard)
+    library(glue)
+    source("https://raw.githubusercontent.com/mahendra-mariadassou/phyloseq-extended/master/R/load-extra-functions.R")
+    source("internals.R")
+  },
+  "load demo Chailloux" = {
+    load("demo/demo.RData")
+    data <- get("food")
+  },
+  "barplot" = {
+    p <- plot_bar(physeq = data, fill = "Phylum", x = "Description", title = "OTU abundance barplot")
+    p <- p + facet_grid(". ~ EnvType", scales = "free_x")
+    plot(p)
+  },
+  "filtered plot" = {
+    p <- plot_composition(physeq = data, taxaRank1 = "Kingdom", taxaSet1 = "Bacteria", taxaRank2 = "Phylum", numberOfTaxa = 10, fill = "Phylum", x = "Description")
+    p <- p + facet_grid(". ~ EnvType", scales = "free_x")
+    plot(p)
+  },
+  "heatmap" = {
+    p <- plot_heatmap(prune_taxa(names(sort(taxa_sums(data), decreasing = TRUE)[1:250]), data), distance = "bray", method = "NMDS", low = "yellow", high = "red", na.value = "white", sample.order = "Description", title = "Taxa heatmap by samples")
+    p <- p + facet_grid(". ~ EnvType", scales = "free_x")
+    plot(p)
+  },
+  "alpha" = {
+    p <- plot_richness(physeq = data, measures = c("Observed", "Chao1", "ACE", "Shannon", "Simpson", "InvSimpson", "Fisher"), x = "EnvType", color = "EnvType", shape = "FoodType", title = "Alpha diversity graphics")
+    p <- p + geom_boxplot()
+    p <- p + geom_point()
+    plot(p)
+  },
+  "beta" = {
+    beta <- melt(as(distance(data, method = "bray"), "matrix"))
+    colnames(beta) <- c("x", "y", "distance")
+    new_factor = as.factor(get_variable(data, "EnvType"))
+    variable_sort <- as.factor(get_variable(data, "EnvType")[order(new_factor)])
+    L = levels(reorder(sample_names(data), as.numeric(new_factor)))
+    beta$x <- factor(beta$x, levels = L)
+    beta$y <- factor(beta$y, levels = L)
+    palette <- hue_pal()(length(levels(new_factor)))
+    tipColor <- col_factor(palette, levels = levels(new_factor))(variable_sort)
+    p1 <- ggplot(beta, aes(x = x, y = y, fill = distance))
+    p1 <- p1 + geom_tile()
+    p1 <- p1 + ggtitle("Beta diversity heatmap")
+    p1 <- p1 + theme(axis.text.x = element_text(angle = 90, hjust = 1, color = tipColor), axis.text.y = element_text(color = tipColor), axis.title.x = element_blank(), axis.title.y = element_blank())
+    plot(p1 + scale_fill_gradient2())
+  },
+  "rarefaction" = {
+    p <- ggrare(physeq = data, step = 100, se = FALSE, color = "EnvType", label = "Description")
+    p <- p + facet_grid(". ~ FoodType")
+    p <- p + geom_vline(xintercept = min(sample_sums(data)), color = "gray60")
+    p <- p + ggtitle("Rarefaction curves")
+    plot(p)
+  },
+  "acp" = {
+    p <- plot_samples(physeq = data, ordination = ordinate(data, method = "MDS", distance = "unifrac"), axes = c(1, 2), color = "EnvType", shape = "FoodType", replicate = "EnvType", label = "Description", title = "Samples ordination graphic")
+    p <- p + stat_ellipse(aes_string(group = "EnvType"))
+    plot(p + theme_bw())
+  },
+  "tree" = {
+    p <- plot_tree(physeq = prune_taxa(names(sort(taxa_sums(data), decreasing = TRUE)[1:20]), data), method = "sampledodge", color = "EnvType", size = "abundance", label.tips = "taxa_names", sizebase = 5, ladderize = "left", plot.margin = 0, title = "Phylogenetic tree")
+    plot(p)
+  },
+  "clustering" = {
+    p <- plot_clust(physeq = data, dist = "unifrac", method = "ward.D2", color = "EnvType")
+    plot(p)
+  },
+  times = 100,  unit = 's', order = 'inorder', warmup = 0)
+
+mb
+autoplot(mb)