perf: use extend when buffering partition row indices in the native shuffle writer
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
- Tipo di issue
- Refactoring
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- rust, spark
- Ambito
- data-engineering
Direzione di ricerca
Il ciclo da sostituire si trova in MultiPartitionShuffleRepartitioner::buffer_partitioned_batch_may_spill in native/shuffle/src/partitioners/multi_partition.rs, dove una chiamata a reserve è seguita da chiamate push per ogni riga. Leggi quella funzione, poi compila il benchmark con cargo bench --bench shuffle_writer e salva una baseline prima di modificare il codice. Il lavoro è completo quando il ciclo diventa un extend sulle stesse tuple, il benchmark viene confrontato con la baseline e il risultato viene riportato anche se rientra nel rumore.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What is the problem the feature request solves?
MultiPartitionShuffleRepartitioner::buffer_partitioned_batch_may_spill in native/shuffle/src/partitioners/multi_partition.rs pushes the row indices of each partition one at a time after reserve:
indices.reserve(row_indices.len());
for row_idx in row_indices {
indices.push((buffered_partition_idx, *row_idx));
}
Vec::push re-checks capacity on every iteration. indices.extend(row_indices.iter().map(|&r| (buffered_partition_idx, r))) gets the trusted-length specialization and writes the tuples in one pass.
Describe the potential solution
Replace the loop with extend. Run cargo bench --bench shuffle_writer before and after (save a baseline with --save-baseline before); the change is small, so report the result either way and drop it if it is within noise.
Additional context
Micro item from #5002, carried into #5905. Good first issue.
- Lingua principale
- Scala
- Stelle
- 1.3k
- Fork
- 391
- Merge medio
- 2g 12h
- PR unite (30g)
- 428
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/datafusion-comet
-
enhancement
Difficoltà 1/5 1-3 ore Idoneità per principianti 83/100
apache/datafusion-comet#7101 ·
I maintainer di solito rispondono entro 1 giorno
-
Native hashing of NullType and ANSI interval values fails with "Unsupported data type in hasher"Forse già presa @ump45nose l’ha presa 2 giorni fa. Apertaarea:expressions area:shuffle bug priority:high
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
apache/datafusion-comet#7063 ·
I maintainer di solito rispondono entro 1 giorno
-
requires-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
apache/datafusion-comet#7001 ·
I maintainer di solito rispondono entro 1 giorno
-
Extract shared list-array construction from the split_* functions in split.rsForse già presa @arminazimi l’ha presa 4 giorni fa. Apertaarea:expressions enhancement good first issue help wanted requires-triage rust tech debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
apache/datafusion-comet#6983 ·
I maintainer di solito rispondono entro 1 giorno
-
Deduplicate spark_ceil and spark_floor and port floor's decimal boundary tests to ceilForse già presa @med9110 l’ha presa 4 giorni fa. Apertaarea:expressions enhancement help wanted requires-triage rust tech debt
Difficoltà 2/5 Mezza giornata Idoneità per principianti 68/100
apache/datafusion-comet#6974 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di apache/datafusion-comet
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
scope:security type:aquasec
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
AbsaOSS/atum-service#494 ·
-
Send camera_pitch and camera_roll to the AI API so validator crops can be tilt-correctedForse già presa @jonfroehlich l’ha presa 1 giorno fa. ApertaAI Auto-validate
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
ProjectSidewalk/SidewalkWebpage#5788 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno