> on pourra aussi segmenter le crible en différents morceaux qui tiennent dans le cache L1
Ce qu'il faut c'est un alignement des données (+padding) afin que le CPU n'ait pas à décaler des octets pour accéder aux éléments et un code assez compact. Le code généré à partir du C doit être tout riquiqui, donc il ne pose pas problème. On doit, à vue de nez, tenir sur une trentaine d'instructions assembleur max pour l'algo.
L'optimisation -O3 est tentante mais elle se fait battre assez (trop ?) souvent par -Os.
ÀMHA le problème à résoudre ici est surtout un problème de pénalités suite à l'adressage d'une quantité importante de mémoire.
Si il me restait de la motivation pour ces choses là, j'aurais tenté de faire des tronçons de 100 000 éléments (à voir et à expérimenter) avec les données dans le code, puis stocker les résultats à la fin de tout les calculs du tronçon. Ça sur n boucles, sans malloc(), sans free(), il me semble que ça donnerait quelque chose d'assez intéressant.
The capacity of the human mind for swallowing nonsense and spewing it forth in violent and repressive action has never yet been plumbed. -- Robert A. Heinlein
[^] # Re: Un bench vaut ce qu'il vaut
Posté par téthis . En réponse au journal Javascript plus rapide que python ! (une suite possible). Évalué à 2.
Ce qu'il faut c'est un alignement des données (+padding) afin que le CPU n'ait pas à décaler des octets pour accéder aux éléments et un code assez compact. Le code généré à partir du C doit être tout riquiqui, donc il ne pose pas problème. On doit, à vue de nez, tenir sur une trentaine d'instructions assembleur max pour l'algo.
L'optimisation -O3 est tentante mais elle se fait battre assez (trop ?) souvent par -Os.
ÀMHA le problème à résoudre ici est surtout un problème de pénalités suite à l'adressage d'une quantité importante de mémoire.
Si il me restait de la motivation pour ces choses là, j'aurais tenté de faire des tronçons de 100 000 éléments (à voir et à expérimenter) avec les données dans le code, puis stocker les résultats à la fin de tout les calculs du tronçon. Ça sur n boucles, sans malloc(), sans free(), il me semble que ça donnerait quelque chose d'assez intéressant.
The capacity of the human mind for swallowing nonsense and spewing it forth in violent and repressive action has never yet been plumbed. -- Robert A. Heinlein