IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

array: for() vs map()


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par d�faut array: for() vs map()
    Bonjour

    Depuis peu j'utilise array.map() � la place des boucles for() malgr� un avis assez r�pandu selon lequel cette m�thode serait plus lente et donc pas adapt�e au 'hot code'.
    Or cet article r�cent par exemple taille un short � la boucle for...

    Alors voil�, question simple et directe : selon vous peut-on oublier d�finitivement les for() si par exemple on ne cible que les navigateurs r�cents ?

  2. #2
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par d�faut
    Je connaissais pas le while power, effectivement c'est fut�, et le + rapide !


    Sinon for() est x2 + rapide (avec FF) que map().

    Mais il y a 2 autres arguments dans l'article : le scope ind�pendant (qui �vite de s'emmeler les 'i' et autres variables) et l'aspect m�moire :
    It also points out something that you would not notice if merely viewing a for() vs .forEach() test like this. for() uses more memory than .forEach()!

    Alors question tr�s g�n�rale : en quoi est ce que l'utilisation de la m�moire est importante face � la vitesse ??
    Est ce que ce choix l� peut vraiment influer sur la performance globale, sachant qu'il peut s'int�grer dans du 'hot code' justement et dans des processus qui bouffent d�j� pas mal de m�moire... (du three.js en l'occurrence) ?

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Ao�t 2013
    Messages
    19
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2013
    Messages : 19
    Par d�faut
    Question �pineuse aux multiples r�ponses.
    C'est pas une question d'utilisation face � la vitesse, les 2 sont intimement li�.
    Faut rester raisonnable, un pc a 8Go de ram, bon tu a de la marge , maintenant un vieux tel a 512Mo , c'est la criticit� de d�part qui influence tes choix (qu'est se que je veut, sous quelle platforme ...).
    Exemple tu a besoin d'un tableau de 200Mo, plutot que de l'envoyer � une fonction (qui va cr�e une copie, tu te retrouve avec 400Mo ), exteriorise ta variable pour que les 2 fonctions y ai acc�s.
    D'ailleurs, a tu r�element besoin de ses 200Mo ? , d�s le d�part ?

    "Est ce que ce choix l� peut vraiment influer sur la performance globale"
    Oui et non, si tu a une empreinte m�moire de 1Mo sur un pc actuel, tu comprend bien que non, maintenant 250Mo sur une tel de 512Mo, bon la ya un �norme probl�me

    Vitesse et m�moire sont deux choses bien distinct mais qui fonctionne ensemble, l'un impact l'autre et vice versa.
    Je pense que c'est surtout une question d'algorithmie, chose que la majorit� des devs oublie aujourd'hui malheureusement.

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par d�faut
    Ok merci !

    Tout d'abord une pr�cision de d�part : il ne s'agit pas d'it�rer 3 <li> dans un <ul> mais par exemple d'it�rer une g�om�trie compl�te dans une boucle de requestAnimationFrame() ... Donc le genre de truc o� la performance compte vraiment.


    si tu a une empreinte m�moire de 1Mo sur un pc actuel, tu comprend bien que non, maintenant 250Mo sur une tel de 512Mo, bon la ya un �norme probl�me
    > Mais est ce qu'on peut dire que l'utilisation de la m�moire n'influe sur la vitesse que si elle vient � manquer, et que sinon �a ne pose pas trop de probl�me ?

    Exemple tu a besoin d'un tableau de 200Mo, plutot que de l'envoyer � une fonction (qui va cr�e une copie, tu te retrouve avec 400Mo ), exteriorise ta variable pour que les 2 fonctions y ai acc�s.
    D'ailleurs, a tu r�element besoin de ses 200Mo ? , d�s le d�part ?
    > �a c'est justement un truc que je suis pas sur d'avoir bien saisi dans le fonctionnement g�n�ral du js : le fait qu'une fonction "cr�e une copie"... Alors mettons que oui, j'ai besoin de traiter 200Mo dans ce genre de contexte...

    A ce moment l� si je fais le code suivant je "d�plie" 2 fois les 200Mo dans la m�moire c'est ce que �a veut dire ? C'est la raison pour laquelle il faut �viter les r�cursives ?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    var pomper = function( tableau_de_200Mo ){
    	var repomper = function( tableau_de_200Mo ){
    		var truc = ....
    		return truc;
    	}
    	return repomper( tableau_de_200Mo );
    }
    xx = pomper( tableau_de_200Mo );
    Et que veut dire "ext�rioriser" la variable dans ce cas ?

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Ao�t 2013
    Messages
    19
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2013
    Messages : 19
    Par d�faut
    "Mais est ce qu'on peut dire que l'utilisation de la m�moire n'influe sur la vitesse que si elle vient � manquer, et que sinon �a ne pose pas trop de probl�me ?"

    C'est bien plus complexe que sa, dans l'absolue, quand tu cr�e un tableau de 200Mo, c'est pour t'en servir, tu va surement boucl� dessus, faire des recherche dessus,
    et la le proc y tourne.
    Une appli, au dela du programme a elle aussi besoin de m�moire, si tu a une appli qui consome 500Mo et qui tu a 512Mo de ram(on fait abstraction de l'os et autre appli),
    tu comprend qu'il ne te reste que 12Mo de m�moire utile.


    "�a c'est justement un truc que je suis pas sur d'avoir bien saisi dans le fonctionnement g�n�ral du js : le fait qu'une fonction "cr�e une copie" "
    Se n'est pas li� au js mais c'est un probl�me g�n�rale.


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    var tableau_de_200Mo = [...];
    var pomper=function(tableau_de_200Mo){
      // ici en gros l'argument tableau_de_200Mo est une copie (en vrai c'est beaucoup plus complexe que sa)
    }
    pomper(tableau_de_200Mo);

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    var tableau_de_200Mo = [...];
    var pomper=function(){
      // ici tu travail sur le tableau puisqu'il est global, il ni a pas de coipe
    }
    pomper();
    En passant un argument, il cr�e une copie de l'argument

    En php, peut etre a d�ja tu vu sa

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    function pomper(&variable)
    ici on passe notre variable en r�ference, c'est a dire qu'on lui fournit l'adresse du tableau, il ne cr�e donc pas de copie puisque il sait ou est le tableau originale

    C'est un sujet complexe, sa d�pend d'�norm�ment de choses, ne serait ce du navigateur (moteur)

Discussions similaires

  1. JAG - Java API for Google Maps web Services
    Par gueekAddict dans le forum Projets
    R�ponses: 1
    Dernier message: 16/12/2012, 15h59
  2. Google cr�e Analytics for Google Maps
    Par Hinault Romaric dans le forum APIs Google
    R�ponses: 2
    Dernier message: 22/04/2012, 16h18
  3. array for noob
    Par xian21 dans le forum ASP.NET
    R�ponses: 2
    Dernier message: 27/09/2007, 11h50
  4. array for noob (je parle de moi ^^)
    Par xian21 dans le forum C#
    R�ponses: 15
    Dernier message: 26/09/2007, 14h06
  5. MAPPING configuration error for request URI
    Par Turtle dans le forum JBuilder
    R�ponses: 1
    Dernier message: 17/02/2005, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo