Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Slower `fsetdiff` vs `dplyr::setdiff`

Abierto
#7,783 3 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
r
Área
performance

Línea de trabajo

Start by reproducing the issue's bench::mark comparison between data.table::fsetdiff and dplyr::setdiff using the supplied data.table inputs. Trace the fsetdiff implementation and compare the relevant work with the benchmarked alternative. Done means preserving fsetdiff's results while measurably reducing its runtime and memory allocation on this example.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

atime

This came up after code profiling where a loop was calling fsetdiff in each pass among other things.

library(data.table)

olddt <- data.table::data.table(a = paste0(1:10000, "a"))
newdt <- data.table::data.table(a = paste0(1:10010, "a"))


bench::mark(DT = data.table::fsetdiff(newdt, olddt),
            DPLYR = dplyr::setdiff(newdt, olddt),
            min_iterations = 30,
            relative = TRUE)[, 1:5]
# A tibble: 2 × 5
  expression     min  median `itr/sec` mem_alloc
  <bch:expr>   <dbl>   <dbl>     <dbl>     <dbl>
1 DT         10.7859 11.0259    1        1.81242
2 DPLYR       1       1        10.0019   1  


bench::mark(DT = data.table::fsetdiff(newdt, olddt),
            DPLYR = dplyr::setdiff(newdt, olddt),
            min_iterations = 30,
            relative = FALSE)[, 1:5]

# A tibble: 2 × 5
  expression      min   median `itr/sec` mem_alloc
  <bch:expr> <bch:tm> <bch:tm>     <dbl> <bch:byt>
1 DT           4.77ms   5.66ms   171.193     763KB
2 DPLYR         432µs  505.4µs  1799.31      421KB

Session info

sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.5.3 (2026-03-11 ucrt)
#>  os       Windows 11 x64 (build 26200)
#>  system   x86_64, mingw32
#>  ui       RTerm
#>  language (EN)
#>  collate  English_United Kingdom.utf8
#>  ctype    English_United Kingdom.utf8
#>  date     2026-06-07
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package     * version date (UTC) lib source
#>  bench         1.1.4   2025-01-16 [1] CRAN (R 4.5.2)
#>  cli           3.6.6   2026-04-09 [1] CRAN (R 4.5.3)
#>  data.table  * 1.18.4  2026-05-06 [1] CRAN (R 4.5.3)
#>  digest        0.6.39  2025-11-19 [1] CRAN (R 4.5.2)
#>  dplyr         1.2.1   2026-04-03 [1] CRAN (R 4.5.3)
#>  evaluate      1.0.5   2025-08-27 [1] CRAN (R 4.5.2)
#>  fastmap       1.2.0   2024-05-15 [1] CRAN (R 4.5.2)
#>  fs            2.1.0   2026-04-18 [1] CRAN (R 4.5.3)
#>  generics      0.1.4   2025-05-09 [1] CRAN (R 4.5.2)
#>  glue          1.8.1   2026-04-17 [1] CRAN (R 4.5.3)
#>  htmltools     0.5.9   2025-12-04 [1] CRAN (R 4.5.2)
#>  knitr         1.51    2025-12-20 [1] CRAN (R 4.5.2)
#>  lifecycle     1.0.5   2026-01-08 [1] CRAN (R 4.5.2)
#>  magrittr      2.0.5   2026-04-04 [1] CRAN (R 4.5.3)
#>  otel          0.2.0   2025-08-29 [1] CRAN (R 4.5.2)
#>  pillar        1.11.1  2025-09-17 [1] CRAN (R 4.5.2)
#>  pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 4.5.2)
#>  profmem       0.7.0   2025-05-02 [1] CRAN (R 4.5.2)
#>  R6            2.6.1   2025-02-15 [1] CRAN (R 4.5.2)
#>  reprex        2.1.1   2024-07-06 [1] CRAN (R 4.5.2)
#>  rlang         1.2.0   2026-04-06 [1] CRAN (R 4.5.3)
#>  rmarkdown     2.31    2026-03-26 [1] CRAN (R 4.5.3)
#>  rstudioapi    0.18.0  2026-01-16 [1] CRAN (R 4.5.2)
#>  sessioninfo   1.2.4   2026-06-04 [1] CRAN (R 4.5.3)
#>  tibble        3.3.1   2026-01-11 [1] CRAN (R 4.5.2)
#>  tidyselect    1.2.1   2024-03-11 [1] CRAN (R 4.5.2)
#>  utf8          1.2.6   2025-06-08 [1] CRAN (R 4.5.2)
#>  vctrs         0.7.3   2026-04-11 [1] CRAN (R 4.5.3)
#>  withr         3.0.2   2024-10-28 [1] CRAN (R 4.5.2)
#>  xfun          0.57    2026-03-20 [1] CRAN (R 4.5.3)
#>  yaml          2.3.12  2025-12-10 [1] CRAN (R 4.5.2)
#> 
#>  [1] C:/Program Files/R/library
#>  [3] C:/Program Files/R/R-4.5.3/library
#>  * ── Packages attached to the search path.
#> 
#> ──────────────────────────────────────────────────────────────────────────────
Lenguaje dominante
R
Estrellas
3.9k
Forks
1.1k
Merge medio
15 h 51 min
PR fusionados (30 d)
3

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Rdatatable/data.table

Todos los issues de Rdatatable/data.table

Issues similares

Más issues de R

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.