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.
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
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):
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.
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.
[^] # Re: Pas équivalent
Posté par zakuarbor (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 compilateursLes 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.
./wallis_gcc1
./wallis_c
./wallis_gcc2
Mais les résultats entre JavaScript et
./wallis_c
(avec la compilation de Zig), c'était choquant.bun wallis.js
./wallis_c
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 avecperf
etvalgrind
. 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.
./wallis_gcc1
./wallis_c
./wallis_gcc2
Zig est le plus vite sur mon Raspberry Pi et JavaScript est le plus lent.
bun wallis.js
./wallis_c
./wallis_zig
./wallis_gcc1
./wallis_gcc2
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 zakuarbor (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.
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
):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 zakuarbor (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.
./wallis_gcc1
./wallis_c
./wallis_gcc2
La différence entre
./wallis_gcc1
et./wallis_gcc2
est que j'utilise__builtin_expect
pour la condition deif
(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:
bun wallis.js
./wallis_c
./wallis_zig
./wallis_gcc1
./wallis_gcc2
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.