stdlib-js / stdlib-js/stdlib

[RFC]: Improve sorted arrays generation in C benchmarks for sorted-input packages

Ouverte
#10,415 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
JavaScript
Étoiles
6k
Forks
1.3k
Merge moyen
1 j 3 h
PR mergées (30 j)
611

Description

### Description

This RFC proposes to generalize the generation of random arrays in C benchmarks for sorted-input packages. It mainly tries to add a random factor for the generated values and make use of the already existing `rand_double()` function and `time.h` header for consistency between packages.

For example, for double precision packages, to be changed from: (e.g., from `stats/base/strided/dminsorted`)
```C
x = (double *) malloc( len * sizeof( double ) );
for ( i = 0; i < len; i++ ) {
x[ i ] = i;
}
```
To:
```C
x = (double *) malloc( len * sizeof( double ) );
for ( i = 0; i < len; i++ ) {
x[ i ] = (double)i + rand_double();
}
```
Packages that are directly affected by this (add more if found):

- [ ] `stats/strided/dmediansorted`
- [ ] `stats/strided/dmaxsorted`
- [ ] `stats/strided/dminsorted`
- [ ] `stats/strided/smediansorted`
- [ ] `stats/strided/smaxsorted`
- [ ] `stats/strided/sminsorted`

### Related Issues

None.

### Questions

#### Question 1
I suggest that we either enforce this or refactor the already existing packages that don't use any randomness by removing the `time.h` header and `rand_double()` function since they're not used anywhere in the benchmark.

#### Question 2
What about the absolute sorted-input packages? Current approach is: (from `stats/base/strided/dmaxabssorted`)
```C
x = (double *) malloc( len * sizeof( double ) );
for ( i = 0; i < len; i++ ) {
x[ i ] = i - (len/2);
}
```

### Other

No.

### Checklist

- [x] I have read and understood the [Code of Conduct](https://github.com/stdlib-js/stdlib/blob/develop/CODE_OF_CONDUCT.md).
- [x] Searched for existing issues and pull requests.
- [x] The issue name begins with `RFC:`.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Start by reviewing the listed stats/strided/*sorted benchmark packages, especially dmediansorted, dmaxsorted, dminsorted, smediansorted, smaxsorted, and sminsorted, along with their existing rand_double() and time.h usage. Resolve whether absolute sorted-input packages are included; done means the agreed generation approach is applied consistently or unused randomness support is removed across the affected benchmarks.

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

Évaluation

Stack technique
c
Domaine
performance
Type d'issue
Refactorisation
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

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