Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[.data.table is very slow with a single integer #5636

Open
MLopez-Ibanez opened this issue May 13, 2023 · 3 comments
Open

[.data.table is very slow with a single integer #5636

MLopez-Ibanez opened this issue May 13, 2023 · 3 comments

Comments

@MLopez-Ibanez
Copy link
Contributor

In this code:

library(data.table)
parameters <- list(types = c(p1 = "r", p2 = "r", p3 = "r", dummy = "c"),
                   digits = 4)
n <- 10000
newConfigurations <- data.table(p1 = runif(n), p2 = runif(n), p3 = runif(n),
                                dummy = sample(c("d1", "d2"), n, replace=TRUE))

repair_sum2one <- function(configuration, parameters)
{
  isreal <- names(which(parameters$types[colnames(configuration)] == "r"))
  digits <- parameters$digits[isreal]
  c_real <- unlist(configuration[isreal])
  c_real <- c_real / sum(c_real)
  c_real[-1] <- round(c_real[-1], digits[-1])
  c_real[1] <- 1 - sum(c_real[-1])
  configuration[isreal] <- c_real
  return(configuration)
}
j <- colnames(newConfigurations)
for (i in seq_len(nrow(newConfigurations)))
      set(newConfigurations, i, j = j, value = repair_sum2one(as.data.frame(newConfigurations[i]), parameters))

More than half the time is spent in [.data.table. Even the function repair_sum2one is faster.

Originally posted by @MLopez-Ibanez in #3735 (comment)

@jangorecki
Copy link
Member

jangorecki commented May 14, 2023

AFAIR there is already PR that solves that, possibly authored by my person

@tdhock
Copy link
Member

tdhock commented Oct 6, 2023

which PR solves this? (would be useful in our efforts at performance testing)

@jangorecki
Copy link
Member

#4488
Possibly

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants