Optimiser la mémoire en travaillant avec de nombreuses donnéesBonjour !
J'itére de nombreuses analyses en boucle - comme des millions - et j'ai besoin de stocker les résultats. Ces résultats sont des valeurs textuelles et des valeurs numériques. Jusqu'à présent, j'ai stocké les résultats dans une table de données, mais à mesure que la taille de la table augmente, la mémoire augmente également et la vitesse des analyses a tendance à diminuer.
Je cherche un moyen de gagner du temps et de la mémoire.
La table est déjà en privé (comme suggéré dans un autre sujet du forum) ; ça le rend meilleur mais ce n'est pas suffisant.
J'ai essayé de sauvegarder ma variable de texte dans une liste et mes variables numériques dans un vecteur (c'est assez efficace pour R). Peut-être que je l'ai mal fait mais il semble ici augmenter le temps de la boucle.
Est-ce que quelqu'un a une bonne idée?
J'utilise Jmp 14 mais j'ai accès à JMP 16.
Automatisation et scriptRe : Optimiser la mémoire en travaillant avec de nombreuses donnéesQuelles plateformes spécifiques utilisez-vous ? JMP 16 et 17 ont amélioré la vitesse de nombreuses plates-formes.
Vous pouvez également utiliser la fonction HP Time() pour tester les itérations. Quelques bonnes discussions sont ici et ici .
Re : Optimiser la mémoire en travaillant avec de nombreuses donnéesAjouter à @Jed_Campbell de, vous pouvez également utiliser la fonctionnalité de profilage dans JMP Débogueur pour déterminer où se trouvent les goulots d'étranglement.
Re : Optimiser la mémoire en travaillant avec de nombreuses donnéesSi vous manquez de mémoire, faites attention aux tables de données privées que vous avez oublié de fermer. (essayez de les rendre invisibles plutôt que privés pour vous assurer que vous les avez fermés. Invisible apparaît toujours dans la fenêtre d'accueil.)
Si JMP s'exécute de plus en plus lentement
- Si vous avez un ordinateur de bureau à l'ancienne avec une lumière de disque, gardez un œil dessus pour voir s'il reste allumé beaucoup. Vous créez peut-être des matrices vraiment volumineuses. J(10000) crée une matrice 2D (et non 1D).
- si vous construisez une chaîne ou une matrice en concaténant jusqu'à la fin, cela devient très lent à mesure que la chaîne ou la matrice s'agrandit. Pré-allouez la matrice à la bonne taille ou utilisez une liste de parties de chaîne suivie de concatitems() lorsque vous avez terminé.
Utilisez le profileur du débogueur JSL comme @Mark_Bailey suggère.
Wrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoWrench, Clock, GoClé, Horloge, Aller
Si vous avez de la chance, il y aura un hotspot évident qui pourrait correspondre à quelque chose ci-dessus.
Re : Optimiser la mémoire en travaillant avec de nombreuses donnéesJ'utilise la plateforme Kmean (et j'ouvre et ferme des rapports tout au long du processus).
J'ai l'habitude d'utiliser tick second() , je ne connaissais pas Hp time() . Ça a l'air d'être pareil ?
Je vais vérifier les discussions que vous avez repérées merci.
Re : Optimiser la mémoire en travaillant avec de nombreuses donnéesMerci Craige, c'est un très bon conseil, je n'avais aucune idée que l'allocation préalable de la taille aiderait !
Je suis à peu près sûr qu'il ne s'agit pas de tables que j'ai oublié de fermer car j'avais une étape dans mon script où mes tables étaient visibles.