• # -march

    Posté par . En réponse au journal Recherche de valeur dans un tableau et l'écosystème des compilateurs C++. Évalué à 5.

    Je me demandais quelle était l'influence de -march=... pour ce genre d'algo. J'ai testé ton benchmark chez moi (i5-9600k) avec g++ seulement (la flemme d'installer d'autres compilateurs). Sans changer les options, je trouve des résultats similaires aux tiens sauf que benchmark_cpp est plus rapide que benchmark_c_unrolled.

    Avec -march=native ou -march=skylake, benchmark_c devient aussi bon que benchmark_c_unrolled. benchmark_c_unrolled et benchmark_cpp ne bougent pas. benchmark_sse2 devient plus lent ! (plus lent que benchmark_cpp mais toujours plus rapide que benchmark_c_unrolled)

    Avec -march=core2, benchmark_c est tout autant accéléré, benchmark_c_unrolled va encore un peu plus vite, benchmark_cpp et benchmark_sse2 sont aussi rapide que sans l'option.

    Donc -march est bien important, mais g++ ne semble pas très bon pour les architectures récentes et sabote même l'algo sse2.