fork download
  1. object Main extends App {
  2. val abc = (1 to 1000).toList
  3.  
  4. val startTime1 = System.currentTimeMillis()
  5. val v1 = abc.scanLeft(List[Int]()) {
  6. (a, acc)=> a ++ List(acc)
  7. }.tail
  8. val endTime1 = System.currentTimeMillis()
  9. println(s"1: ${endTime1 - startTime1} ms")
  10.  
  11. val startTime2 = System.currentTimeMillis()
  12. val v2 = (1 to abc.length).map(abc.take).toList
  13. val endTime2 = System.currentTimeMillis()
  14. println(s"2: ${endTime2 - startTime2} ms")
  15.  
  16. val startTime3 = System.currentTimeMillis()
  17. val v3 = abc.inits.toList.reverse.tail
  18. val endTime3 = System.currentTimeMillis()
  19. println(s"3: ${endTime3 - startTime3} ms")
  20.  
  21. val startTime4 = System.currentTimeMillis()
  22. val v4 = ((List.empty[List[Int]], List.empty[Int]) /: abc) {
  23. case ((all, cur), i) => val next = cur :+ i ; ((all :+ next, next))
  24. }
  25. val endTime4 = System.currentTimeMillis()
  26. println(s"4: ${endTime4 - startTime4} ms")
  27.  
  28. val startTime5 = System.currentTimeMillis()
  29. val v5 = (List(List(abc.head)) /: abc.tail) {
  30. case (all, i) => all :+ (all.last :+ i)
  31. }
  32. val endTime5 = System.currentTimeMillis()
  33. println(s"5: ${endTime5 - startTime5} ms")
  34. }
Success #stdin #stdout 1.44s 322240KB
stdin
Standard input is empty
stdout
1: 130 ms
2: 165 ms
3: 373 ms
4: 187 ms
5: 172 ms