zakuarbor a écrit 3 commentaires

  • [^] # Re: Pas équivalent

    Posté par  (site web personnel) . En réponse au message Je veux bien que JavaScript soit optimisé, mais quand même !.... Évalué à 1.

    Les résultats sont très intéressants. C'est très différent pour chaque système.

    Pour les résultats: https://codeberg.org/zakuArbor/Wallis/src/branch/master/results
    * laptop: ordinateur portable (Lenovo X1 Carbon Gen 7)
    * pc: petit ordinateur (Mini Desktop PC M900)
    * rpi3: Raspberry Pi 3
    * *-spec.md: les spécifications et les versions des compilateurs

    Les Résultats Sur l'Ordinateur Portable

    La poste dernière, j'ai utilisé mon ordinateur portable. J'ai relancé le benchmark et les résultats n'ont pas changé. Les résultats pour le deuxième fois sont ici

    Les Résultats Sur Le Petit Ordinateur

    Pour mon petit ordinateur (pc), la différence entre la compilation de C avec Zig et GCC n'est pas petite aussi.

    Command Mean [s] Min [s] Max [s] Relative
    ./wallis_gcc1 1.670 ± 0.010 1.653 1.682 1.00 ± 0.01
    ./wallis_c 2.257 ± 0.010 2.245 2.269 1.35 ± 0.01
    ./wallis_gcc2 1.666 ± 0.010 1.650 1.677 1.00

    Mais les résultats entre JavaScript et ./wallis_c (avec la compilation de Zig), c'était choquant.

    Command Mean [s] Min [s] Max [s] Relative
    bun wallis.js 2.096 ± 0.141 2.016 2.372 1.26 ± 0.08
    ./wallis_c 2.245 ± 0.018 2.218 2.262 1.35 ± 0.01

    Pour tous les résultats: https://codeberg.org/zakuArbor/Wallis/src/branch/master/results/pc/pc-result.md

    Spécs:
    * Modèle du CPU: Intel(R) Core(TM) i5-6500T CPU @ 2.50GHz
    * Taille de la mémoire RAM installée: 15Gi
    * Système d'exploitation: Fedora Linux 40 (Server Edition)
    * Nombre de coeurs: 4
    * Zig: 0.13.0
    * GCC: 14.1.1
    * Bun: 1.0.0

    Je ne comprends pas pourquoi ./wallis_c (avec la compilation de Zig) est plus lent. Si j'ai le temps, je vais analyser la performance avec perf et valgrind. La différence entre ./wallis_zig et JavaScript est petite, mais Zig est plus vite que Javascript. Il n'est pas surpris.

    Raspberry Pi 3

    J'ai obtenu les mêmes résultats avec votre CPU à 800MHz sur mon Raspberry Pi (à 1.2Ghz) pour la différence entre la compilation de C avec Zig et GCC.

    Command Mean [s] Min [s] Max [s] Relative
    ./wallis_gcc1 31.062 ± 0.002 31.058 31.065 1.00 ± 0.00
    ./wallis_c 31.062 ± 0.004 31.056 31.067 1.00 ± 0.00
    ./wallis_gcc2 31.061 ± 0.001 31.059 31.063 1.00

    Zig est le plus vite sur mon Raspberry Pi et JavaScript est le plus lent.

    Command Mean [s] Min [s] Max [s] Relative
    bun wallis.js 39.493 ± 0.003 39.490 39.499 1.43 ± 0.00
    ./wallis_c 31.031 ± 0.008 31.026 31.053 1.12 ± 0.00
    ./wallis_zig 27.674 ± 0.003 27.671 27.680 1.00
    ./wallis_gcc1 31.027 ± 0.002 31.026 31.030 1.12 ± 0.00
    ./wallis_gcc2 31.027 ± 0.002 31.026 31.032 1.12 ± 0.00

    Spécs:
    * Modèle du CPU: Cortex-A53
    * Taille de la mémoire RAM installée: 907Mi
    * Système d'exploitation: Debian GNU/Linux 12 (bookworm)
    * Nombre de coeurs: 4
    * Zig: 0.13.0
    * GCC: 12.2.0 (Il y a un problème avec mon script, j'ai écrit la version ici mais dans le répo, il n'y a pas la version)
    * Bun: 1.0.0

  • [^] # Re: Pas équivalent

    Posté par  (site web personnel) . En réponse au message Je veux bien que JavaScript soit optimisé, mais quand même !.... Évalué à 1. Dernière modification le 29 juin 2024 à 21:19.

    Merci pour votre réponse. J'utilise les mêmes options d'optimisation.

    zig build-exe wallis.zig --name wallis_zig -O ReleaseFast
    zig cc wallis.c -o wallis_c -O3
    gcc wallis.c -o wallis_gcc1 -O3
    gcc wallis_gcc.c -o wallis_gcc2 -O3

    J'ai déconnecté mon compte sur l'ordinateur avant j'ai exécuté le benchmark. Mon console est la "seule" application fonctionnait (sauf les applications du système comme GUI (GNOME avec wayland) et processus en arrière-plan). Je n'ai pas changé votre code sauf ./wallis_gcc2.

    Les écritures dans la console, sauf la dernière, ont désactivé. Mais pour le Javascript, toutes les écritures ont désactivé.

    Voici les checksums pour les code sources (sauf ./wallis_gcc2):

    3ea4d6b73ab6e9719ee547fd29625e44 wallis.js
    e84fe29144ca7329e35aa1cc059a8bbb wallis.c
    7d66b54e15ce7ee93dda5c0fe4231941 wallis.zig

    Je vais réessayer dans mon ordinateur et dans un autre ordinateur. Votre nouveaux résultats pour Javascript est un grand surprise.
    C'est intéressant. Mais pour le Javascript, j'esperé qu'il n'est pas juste que le code n'est pas un écriture dans la console.

    Quelqu'un a-t-il d'autres résultats?

  • [^] # Re: Pas équivalent

    Posté par  (site web personnel) . En réponse au message Je veux bien que JavaScript soit optimisé, mais quand même !.... Évalué à 5.

    Merci pour votre benchmark. Je vous en remercie.Mes résultats ont été très différents (la conclusion avec Zig vs GCC et la performance du Javascript que les autres langages).

    La compilation du C avec Zig (0.13.0) et GCC (14.1.1) ne donne pas les mêmes résultats.

    Command Mean [s] Min [s] Max [s] Relative
    ./wallis_gcc1 6.398 ± 0.060 6.336 6.543 1.00
    ./wallis_c 8.660 ± 0.061 8.605 8.797 1.35 ± 0.02
    ./wallis_gcc2 6.407 ± 0.081 6.337 6.568 1.00 ± 0.02

    La différence entre ./wallis_gcc1 et ./wallis_gcc2 est que j'utilise __builtin_expect pour la condition de if (n'est pas une bonne idée. Vous devez utiliser -fprofile-arcs à la place).

    $ diff wallis.c wallis_gcc.c
    20c20
    < if(i==b){
    ---
    > if(__builtin_expect(i==b, 0)){

    La différence entre la compilation de C avec Zig et GCC n'est pas petite.

    En Général:

    Command Mean [s] Min [s] Max [s] Relative
    bun wallis.js 10.271 ± 0.113 10.194 10.502 1.62 ± 0.03
    ./wallis_c 8.635 ± 0.033 8.609 8.711 1.36 ± 0.02
    ./wallis_zig 7.764 ± 0.038 7.743 7.848 1.22 ± 0.02
    ./wallis_gcc1 6.354 ± 0.022 6.340 6.397 1.00 ± 0.02
    ./wallis_gcc2 6.343 ± 0.108 6.101 6.560 1.00

    Je n'exécute pas Python. Javascript est le plus lent, 1.62 fois plus lent que le plus rapide.

    Mon Système:
    * Modèle du CPU: Intel i5-8365U CPU @ 1.60GHz
    * Taille de la mémoire RAM installée: 16Go
    * Système d'exploitation: Linux Fedora 40
    * Nombre de coeurs: 8

    Je pense que Javascript va faire plus similaire avec les autres langages compilés avec un bon ordinateur. Mais je pense,
    pour les ordinateurs plus vieux, la performance de Javascript va grandir que les autre langages compilés.

    p.s. Je suis désolé pour mon français. Maintenant, j'apprends le français pour le niveau A2 … Mon français n'est pas bien maintenant.