Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

“EXPLAIN / profiling” support for [i, j, by] to diagnose performance bottlenecks

Ouverte
#7,620 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
25/100
Type d'issue
Fonctionnalité
Clarté
À clarifier
Activité
À l'abandon
Stack technique
r
Domaine
data, performance

Piste de recherche

The issue names no files, tests, or entry points. Start by reviewing how DT[i, j, by] handles filtering, grouping, joins, keys or indices, materialization, and copies. Define the diagnostics and acceptance criteria for the proposed explain or profiling mode.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Problem

A common difficulty for users is understanding why a particular data.table query is slow.

When writing expressions like:

DT[ i , j , by]

there is currently no way to determine:

Whether time is spent in i filtering, j computation, or by grouping

Whether a key / index is actually being used

Whether grouping is triggering expensive materialization

Whether unexpected memory copies are occurring

Whether a join is using a fast path or falling back to a slower path

Most users rely on:

system.time(DT[i, j, by])

which measures only the total time and gives no insight into the internal bottleneck.

This makes optimization and debugging of complex workflows difficult, especially for users familiar with SQL-style tools like EXPLAIN.

Proposed Idea

Introduce an optional profiling / explain mode for data.table operations, conceptually similar to SQL’s EXPLAIN.

For example:

explain( DT[x > 5, .(m = mean(y)), by = z] )

or

options(datatable.explain = TRUE) DT[x > 5, .(m = mean(y)), by = z]

This could output structured diagnostics such as:

data.table EXPLAIN

Rows scanned: 5,000,000
Rows matched in i: 1,240,532
Groups formed by by: 2,134

Time spent:
i (filter): 120 ms
by (grouping): 340 ms
j (compute): 90 ms

Keys / indices used: YES (key: z)
Materialization: NO
Memory copies: 1 shallow copy

Langage dominant
R
Étoiles
3.9k
Forks
1.1k
Merge moyen
15 h 51 min
PR mergées (30 j)
3

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de Rdatatable/data.table

Toutes les issues de Rdatatable/data.table

Issues similaires

Plus d'issues R

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.