Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

HistogramBase.GetValueAtPercentile — Double-Loop When Flat Array Index Is Available

Aperta
#145 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
55/100
Tipo di issue
Refactoring
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
csharp
Ambito
performance

Direzione di ricerca

Start in HistogramBase.cs at GetValueAtPercentile and inspect how LongHistogram stores its counts, including CountsArrayLength, GetCountAtIndex, and ValueFromIndex. Compare the existing nested scan with the proposed flat traversal; done means percentile lookup preserves the current result while avoiding the nested index mapping.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

agent enhancement

File: HistogramBase.cs

The percentile lookup iterates nested i / j loops over BucketCount × SubBucketCount. Since CountsArrayIndex(bucketIndex, subBucketIndex) maps this to a flat array, and the counts array is already flat in LongHistogram, the entire scan can be done as a single flat loop:

public long GetValueAtPercentile(double percentile)
{
    var countAtPercentile = Math.Max(
        (long)((Math.Min(percentile, 100.0) / 100.0 * TotalCount) + 0.5), 1);
long runningCount = 0;
for (int i = 0; i < CountsArrayLength; i++)
{
    runningCount += GetCountAtIndex(i);
    if (runningCount >= countAtPercentile)
        return HighestEquivalentValue(ValueFromIndex(i));
}
throw new ArgumentOutOfRangeException(...);

}

The nested loop computes GetCountAt(i, j) → GetCountAtIndex(CountsArrayIndex(i, j)) anyway — the flat version eliminates the CountsArrayIndex call per iteration and improves cache locality by accessing memory sequentially.

Lingua principale
C#
Stelle
185
Fork
31
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di HdrHistogram/HdrHistogram.NET

Tutte le issue di HdrHistogram/HdrHistogram.NET

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.