CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[JS] Optimisation functional/object

vava740
vava740
Niveau 10
14 juin 2013 à 14:27:22

Dans le genre questions inutiles, je me demandais quel était le plus rapide en JS entre la programmation fonctionnelle et l'objet (par prototype), en particulier pour la gestion d'événements (callbacks).

J'ai donc décidé de faire des tests et je me suis rendu compte qu'on avait plusieurs possibilités en objet par prototype pour passer des callbacks gardant le contexte objet (this).

Voilà les différents tests sur jsFiddle avec un commentaire d'explication en haut pour chaque méthode.

Pour chaque test, la partie fonctionnelle est la même, mais la partie objet varie sur la façon de définir les callbacks avec contexte.

1) Utilisation de Function.bind(context) : http://jsfiddle.net/ntYYk/2/
2) Utilisation d'un tableau [context, methodName] qu'une fonction sait interpréter et appeler : http://jsfiddle.net/V67fJ/1/
3) Comme la 2 mais en passant directement la méthode sous forme de fonction plutôt que son nom : http://jsfiddle.net/tQDXg/1/
4) Utilisation d'un objet EventHandler: http://jsfiddle.net/TYaw8/1/

Sur mon PC actuel, sous Chrome, je constate que les deux premiers tests sont à l'avantage de la programmation fonctionnelle (qui est 38% plus rapide pour le premier test, et 6% plus rapide pour le deuxième).

Sur les tests 2, 3 et 4, la programmation fonctionnelle est ralentie puisqu'il faut systématiquement tester s'il s'agit d'une fonction, ou d'un tableau avec contexte (ou pour la 4 d'un EventHandler).

Sur les test 3 et 4, la version objet est aussi rapide que la version fonctionnelle (même des fois plus rapide pour le 4).

J'ai aussi rajouter un dernier test particulier : http://jsfiddle.net/aySSy/3/

Il s'agit en fait de la version 4 sans avoir de condition selon qu'il s'agit d'une fonction native ou d'un EventHandler (les fonctions de benchmark assument qu'il s'agit d'un EventHandler).

En comparant avec le test 1 (qui lui aussi n'a pas de condition pour l'appel des fonctions), la programmation fonctionnelle est dans mon cas 6% plus rapide.

Que pensez-vous de la précision de ces tests ? Quels résultats avez-vous sur votre poste, avec quel navigateur ?

Pensez-vous qu'il est plus intéressant d'utiliser la programmation fonctionnelle pour gagner en rapidité, ou que l'élégance de l'objet (à mon goût) justifie de perdre légèrement en rapidité ?

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment