Advertisement
mitrakov

Scala: Par

Jan 10th, 2018
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 3.34 KB | None | 0 0
  1. // 1. let's test usual List
  2. object Main extends App {
  3.   val lst = List(1, 2, 3, 4, 5, 6, 7, 8)
  4.  
  5.   println(LocalDateTime.now() + ": Hello!")
  6.   val result = lst map { item =>
  7.     Thread.sleep(3000)
  8.     val n = item * 10
  9.     println(LocalDateTime.now() + ": " + n)
  10.     n
  11.   }
  12.   println(LocalDateTime.now() + ": Bye! " + result)
  13. }
  14.  
  15.         // Output (look at seconds):
  16.         // 2018-01-15T21:46:39.235: Hello!
  17.         // 2018-01-15T21:46:42.241: 10
  18.         // 2018-01-15T21:46:45.242: 20
  19.         // 2018-01-15T21:46:48.242: 30
  20.         // 2018-01-15T21:46:51.242: 40
  21.         // 2018-01-15T21:46:54.242: 50
  22.         // 2018-01-15T21:46:57.242: 60
  23.         // 2018-01-15T21:47:00.242: 70
  24.         // 2018-01-15T21:47:03.243: 80
  25.         // 2018-01-15T21:47:03.243: Bye! List(10, 20, 30, 40, 50, 60, 70, 80)
  26.  
  27. // 2. now make it parallel! My system has 8-cores processor:
  28. object Main extends App {
  29.   val lst = List(1, 2, 3, 4, 5, 6, 7, 8)
  30.   val plst: ParSeq[Int] = lst.par // !!!
  31.  
  32.   println(LocalDateTime.now() + ": Hello!")
  33.   val result = plst map { item =>
  34.     Thread.sleep(3000)
  35.     val n = item * 10
  36.     println(LocalDateTime.now() + ": " + n)
  37.     n
  38.   }
  39.   println(LocalDateTime.now() + ": Bye! " + result)
  40. }
  41.  
  42.         // Output:
  43.         // 2018-01-15T21:49:10.999: Hello!
  44.         // 2018-01-15T21:49:14.047: 20
  45.         // 2018-01-15T21:49:14.047: 30
  46.         // 2018-01-15T21:49:14.047: 80
  47.         // 2018-01-15T21:49:14.047: 60
  48.         // 2018-01-15T21:49:14.047: 10
  49.         // 2018-01-15T21:49:14.047: 70
  50.         // 2018-01-15T21:49:14.047: 50
  51.         // 2018-01-15T21:49:14.048: 40
  52.         // 2018-01-15T21:49:14.051: Bye! ParVector(10, 20, 30, 40, 50, 60, 70, 80)
  53.  
  54. // 3. what if a collection would be larger than cores count?
  55. val lst = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
  56.  
  57.         // Output:
  58.         // 2018-01-15T21:52:39.112: Hello!
  59.         // 2018-01-15T21:52:42.151: 70
  60.         // 2018-01-15T21:52:42.151: 20
  61.         // 2018-01-15T21:52:42.151: 80
  62.         // 2018-01-15T21:52:42.151: 10
  63.         // 2018-01-15T21:52:42.151: 40
  64.         // 2018-01-15T21:52:42.151: 110
  65.         // 2018-01-15T21:52:42.151: 50
  66.         // 2018-01-15T21:52:42.151: 100
  67.         // 2018-01-15T21:52:45.152: 120
  68.         // 2018-01-15T21:52:45.152: 90
  69.         // 2018-01-15T21:52:45.152: 60
  70.         // 2018-01-15T21:52:45.152: 30
  71.         // 2018-01-15T21:52:45.156: Bye! ParVector(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120)
  72.  
  73. // 4. are they scaled evenly?
  74. val lst = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
  75.  
  76.         // Output:
  77.         // 2018-01-15T21:55:21.230: Hello!
  78.         // 2018-01-15T21:55:24.270: 150
  79.         // 2018-01-15T21:55:24.270: 130
  80.         // 2018-01-15T21:55:24.270: 10
  81.         // 2018-01-15T21:55:24.270: 30
  82.         // 2018-01-15T21:55:24.270: 90
  83.         // 2018-01-15T21:55:24.270: 70
  84.         // 2018-01-15T21:55:24.270: 20
  85.         // 2018-01-15T21:55:24.270: 50
  86.         // 2018-01-15T21:55:27.270: 100
  87.         // 2018-01-15T21:55:27.270: 80
  88.         // 2018-01-15T21:55:27.270: 60
  89.         // 2018-01-15T21:55:27.270: 160
  90.         // 2018-01-15T21:55:27.270: 140
  91.         // 2018-01-15T21:55:27.270: 40
  92.         // 2018-01-15T21:55:27.271: 110
  93.         // 2018-01-15T21:55:30.270: 120
  94.         // 2018-01-15T21:55:30.270: Bye! ParVector(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement