@@ -4738,43 +4738,24 @@ set.seed(45L)
47384738dt = data.table(a=sample(2,10,TRUE), b=sample(3,10,TRUE), c=sample(4,10,TRUE), d=sample(5,10,TRUE))
47394739dt2 = data.table(x=c(1,1,1,2,2,2), y=1:6)
47404740
4741+ gf_out = c("All optimizations are turned off", "Old mean optimization.*(GForce FALSE)", "GForce optimized j to")
4742+ lp_out = c("All optimizations are turned off", "Old mean optimization.*(GForce FALSE)", "lapply optimization changed j")
4743+ opt = c(0L, 1L, Inf)
47414744# auto-naming behavior is different for no-optimization case; just check optimization is off
4742- test(1268.01,optimization=0L , dt[, c(lapply(.SD, mean), lapply(.SD, sum)), by=a, verbose=TRUE], output = 'All optimizations are turned off' )
4743- test(1268.02,optimization=0L , dt[, c(lapply(.SD, mean), .N), by=a, verbose=TRUE], output = 'All optimizations are turned off' )
4744- test(1268.03,optimization=0L , dt[, c(list(c), lapply(.SD, mean)), by=a, verbose=TRUE], output="All optimizations are turned off" )
4745- test(1268.04,optimization=0L , dt[, c(sum(d), lapply(.SD, mean)), by=a, verbose=TRUE], output="All optimizations are turned off" )
4746- test(1268.05,optimization=0L , dt[, c(list(sum(d)), lapply(.SD, mean)), by=a, verbose=TRUE], output="All optimizations are turned off" )
4745+ test(1268.01,optimization=opt , dt[, c(lapply(.SD, mean), lapply(.SD, sum)), by=a, verbose=TRUE], output = gf_out )
4746+ test(1268.02,optimization=opt , dt[, c(lapply(.SD, mean), .N), by=a, verbose=TRUE], output = lp_out )
4747+ test(1268.03,optimization=opt , dt[, c(list(c), lapply(.SD, mean)), by=a, verbose=TRUE], output= lp_out )
4748+ test(1268.04,optimization=opt , dt[, c(sum(d), lapply(.SD, mean)), by=a, verbose=TRUE], output= gf_out )
4749+ test(1268.05,optimization=opt , dt[, c(list(sum(d)), lapply(.SD, mean)), by=a, verbose=TRUE], output= lp_out )
47474750# newly added tests for #861 -- optimise, but no GForce
4748- test(1268.06,optimization=0L , dt[, c(list(sum(d), .I), lapply(.SD, mean)), by=a, verbose=TRUE], output="All optimizations are turned off" )
4751+ test(1268.06,optimization=opt , dt[, c(list(sum(d), .I), lapply(.SD, mean)), by=a, verbose=TRUE], output= lp_out )
47494752# don't optimise .I in c(...)
4750- test(1268.07,optimization=0L, dt2[, c(.I, lapply(.SD, mean)), by=x, verbose=TRUE], output="All optimizations are turned off")
4751-
4752- test(1268.08,optimization=1L, ans1 <- dt[ , c(lapply(.SD, mean), lapply(.SD, sum)), by=a, verbose=TRUE], output="Old mean optimization.*(GForce FALSE)")
4753- test(1268.09,optimization=1L, ans2 <- dt[, c(lapply(.SD, mean), .N), by=a, verbose = TRUE], output="Old mean optimization.*GForce FALSE")
4754- test(1268.10,optimization=1L, ans3 <- dt[, c(list(c), lapply(.SD, mean)), by=a, verbose=TRUE], output = 'Old mean optimization.*GForce FALSE')
4755- test(1268.11,optimization=1L, ans4 <- dt[, c(sum(d), lapply(.SD, mean)), by=a, verbose = TRUE], output="Old mean optimization.*GForce FALSE")
4756- test(1268.12,optimization=1L, ans5 <- dt[, c(list(sum(d)), lapply(.SD, mean)), by=a, verbose=TRUE], output="Old mean optimization.*GForce FALSE")
4757- test(1268.13,optimization=1L, ans6 <- dt[, c(list(sum(d), .I), lapply(.SD, mean)), by=a, verbose=TRUE], output="Old mean optimization.*GForce FALSE")
4758- test(1268.14,optimization=1L, ans7 <- dt2[, c(.I, lapply(.SD, mean)), by=x, verbose=TRUE], output="Old mean optimization.*GForce FALSE")
4759-
4760- test(1268.15,optimization=Inf, dt[, c(lapply(.SD, mean), lapply(.SD, sum)), by=a, verbose=TRUE], ans1,
4761- output="GForce optimized j to 'list(gmean(b), gmean(c), gmean(d), gsum(b), gsum(c), gsum(d))'")
4762- test(1268.16,optimization=Inf, dt[, c(lapply(.SD, mean), .N), by=a, verbose=TRUE], ans2,
4763- output = "lapply optimization changed j from 'c(lapply(.SD, mean), .N)' to 'list(mean(b), mean(c), mean(d), .N)'")
4764- test(1268.17,optimization=Inf, dt[, c(list(c), lapply(.SD, mean)), by=a, verbose=TRUE], ans3,
4765- output = "lapply optimization changed j from 'c(list(c), lapply(.SD, mean))' to 'list(c, mean(b), mean(c), mean(d))")
4766- test(1268.18,optimization=Inf, dt[, c(sum(d), lapply(.SD, mean)), by=a, verbose=TRUE], ans4,
4767- output = "GForce optimized j to 'list(gsum(d), gmean(b), gmean(c), gmean(d))'")
4768- test(1268.19,optimization=Inf, dt[, c(list(sum(d)), lapply(.SD, mean)), by=a, verbose=TRUE], ans5,
4769- output = "GForce optimized j to 'list(gsum(d), gmean(b), gmean(c), gmean(d))'")
4770- test(1268.20,optimization=Inf, dt[, c(list(sum(d), .I), lapply(.SD, mean)), by=a, verbose=TRUE], ans6,
4771- output = "lapply optimization changed j from 'c(list(sum(d), .I), lapply(.SD, mean))' to 'list(sum(d), .I, mean(b), mean(c), mean(d))'")
4772- test(1268.21,optimization=Inf, dt2[, c(.I, lapply(.SD, mean)), by=x, verbose=TRUE], ans7,
4773- output = "lapply optimization is on, j unchanged as 'c(.I, lapply(.SD, mean))'")
4774- test(1268.22,optimization=Inf, dt[, c(as.list(c), lapply(.SD, mean)), by=a],
4753+ test(1268.07,optimization=opt, dt2[, c(.I, lapply(.SD, mean)), by=x, verbose=TRUE],
4754+ output= c("All optimizations are turned off", "Old mean optimization.*(GForce FALSE)", "lapply optimization is on, j unchanged as"))
4755+ # tests .08-.21 were different optimization levels
4756+ test(1268.22,optimization=opt, dt[, c(as.list(c), lapply(.SD, mean)), by=a],
47754757 error = "j doesn't evaluate to the same number of columns for each group")
47764758
4777-
47784759### FR #2722 tests end here ###
47794760
47804761# Wide range numeric and integer64, to test all bits
0 commit comments