import scala.util.Random
def time[R](block: => R): R = {
val t0 = System.nanoTime()
val result = block // call-by-name
val t1 = System.nanoTime()
println("Elapsed time: " + (t1 - t0) + "ns")
result
}
val SZ = 12
val columns = 1 to SZ map(i => s"column$i") toArray
val usersColumns = Random.shuffle(columns.toSet).take(6).toArray
println(usersColumns mkString ", ")
val reordering = usersColumns map columns.zipWithIndex.toMap
def reorder(values: Array[String]): Array[String] = {
reordering map values
}
val values = 1 to SZ map(i => s"item$i") toArray
time {
for (i <- 1 to 10) {
println(reorder(values) mkString ", ")
}
}