-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathmore-hw11.R
More file actions
74 lines (58 loc) · 1.71 KB
/
more-hw11.R
File metadata and controls
74 lines (58 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# Here's a variation on the example in hw11 which suggests that passing the
# 10^8 numbers back to the master process after they are calculated is a
# significant cost.
library(doParallel)
registerDoParallel()
sim1 <- function(n){
rnorm(n)
return()
}
sim2 <- function(n){
rnorm(n)
}
system.time(
sim1(10^8)
) -> time0
system.time(
foreach(i=1:10) %dopar% sim1(10^7)
) -> time1
system.time(
foreach(i=1:10^2) %dopar% sim1(10^6)
) -> time2
system.time(
foreach(i=1:10^3) %dopar% sim1(10^5)
) -> time3
system.time(
foreach(i=1:10^4) %dopar% sim1(10^4)
) -> time4
times1 <- rbind(time0,time1,time2,time3,time4)
system.time(
sim2(10^8)
) -> time0
system.time(
foreach(i=1:10) %dopar% sim2(10^7)
) -> time1
system.time(
foreach(i=1:10^2) %dopar% sim2(10^6)
) -> time2
system.time(
foreach(i=1:10^3) %dopar% sim2(10^5)
) -> time3
system.time(
foreach(i=1:10^4) %dopar% sim2(10^4)
) -> time4
times2 <- rbind(time0,time1,time2,time3,time4)
# > times1
# user.self sys.self elapsed user.child sys.child
# time0 5.372 0.201 5.598 0.000 0.000
# time1 0.005 0.006 1.876 2.473 0.126
# time2 0.015 0.008 1.494 0.002 0.003
# time3 0.093 0.019 1.604 5.668 0.308
# time4 0.878 0.019 2.470 5.818 0.441
# > times2
# user.self sys.self elapsed user.child sys.child
# time0 5.400 0.202 5.614 0.000 0.000
# time1 0.298 0.584 2.774 4.294 0.649
# time2 0.298 0.600 3.703 0.002 0.007
# time3 0.374 0.598 2.868 6.200 0.971
# time4 1.305 0.907 4.942 6.437 1.549