library(microbenchmark)
set.seed(1024) nr <- 1e4 nc <- 100
m <- matrix(runif(nr * nc), nrow = nr, dimnames = list(paste0("g", seq_len(nr)), paste0("s", seq_len(nc))))
microbenchmark( m1 = as.data.frame.table(m),
m2 = as.data.frame.table(m, stringsAsFactors = FALSE),
m3 = data.frame(col = rep(colnames(m), each = nrow(m)), row = rep(rownames(m), ncol(m)), value = as.vector(m)),
m4 = data.frame(col = rep(colnames(m), each = nrow(m)), row = rep(rownames(m), ncol(m)), value = as.vector(m), stringsAsFactors = FALSE) )