Closed kylebutts closed 2 years ago
Reprex on speedup (about 25% on this data size)
library(did) time.periods <- 15 n <- 10000 # unit data id <- 1:n group <- sample(seq(10, 16), n, replace = TRUE) unit_data <- data.frame(id = id, group = group) # generate panel data panel_data <- data.frame( id = sort(rep(id, time.periods)), tp = rep(rep(1:time.periods), n) ) panel_data <- merge(panel_data, unit_data, by = "id") panel_data$D <- 1 * (panel_data$tp >= panel_data$group) # generate heterogeneous treatment effects by calendar date tau <- (panel_data$D == 1) * (panel_data$tp - 12.5) panel_data$Y <- panel_data$id + 3 * panel_data$tp + tau * panel_data$D + rnorm(nrow(panel_data)) head(panel_data) #> id tp group D Y #> 1 1 1 13 0 3.901901 #> 2 1 2 13 0 7.186365 #> 3 1 3 13 0 10.446138 #> 4 1 4 13 0 11.011049 #> 5 1 5 13 0 15.943329 #> 6 1 6 13 0 19.768032 bench::mark( did_1core = att_gt( yname = "Y", gname = "group", idname = "id", tname = "tp", data = panel_data, bstrap = TRUE, biters = 1000, pl = FALSE ), did_4core = att_gt( yname = "Y", gname = "group", idname = "id", tname = "tp", data = panel_data, bstrap = TRUE, biters = 1000, pl = TRUE, cores = 4 ), did_8core = att_gt( yname = "Y", gname = "group", idname = "id", tname = "tp", data = panel_data, bstrap = TRUE, biters = 1000, pl = TRUE, cores = 8 ), did_12core = att_gt( yname = "Y", gname = "group", idname = "id", tname = "tp", data = panel_data, bstrap = TRUE, biters = 1000, pl = TRUE, cores = 12 ), iterations = 5, check = FALSE, memory = FALSE ) #> Warning: Some expressions had a GC in every iteration; so filtering is disabled. #> # A tibble: 4 × 6 #> expression min median `itr/sec` mem_alloc `gc/sec` #> <bch:expr> <bch:tm> <bch:tm> <dbl> <bch:byt> <dbl> #> 1 did_1core 2.73s 2.78s 0.342 NA 24.2 #> 2 did_4core 2.15s 2.24s 0.449 NA 29.0 #> 3 did_8core 2.07s 2.1s 0.473 NA 30.8 #> 4 did_12core 2.12s 2.18s 0.462 NA 30.6
Created on 2022-06-06 by the reprex package (v2.0.1)
Reprex on speedup (about 25% on this data size)
Created on 2022-06-06 by the reprex package (v2.0.1)