Un peu de compexité!!

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Alexandre LEKINA
Messages : 18
Enregistré le : 14 Juin 2007, 14:31
Contact :

Un peu de compexité!!

Messagepar Alexandre LEKINA » 27 Juin 2007, 14:01

Bonjour,
j'aimerais savoir s'il est toujours préférable d'utiliser les fonctions
"*apply" où * = s, m ou l, à la place des boucles for ? ou while ?
gagne t on toujours en rapidité ? :D

Aussi quand on écrit un programme sous R, doit on se préocuper de l'espace alloué aux matrices ou vecteurs intervenants dans nos calculs par exemple comme en C ? si oui, l'équivalent de free c'est lequel ?.

Merci
Encore et toujours de la Sélection de Modèles

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 27 Juin 2007, 16:01

Bonjour,
j'aimerais savoir s'il est toujours préférable d'utiliser les fonctions
"*apply" où * = s, m ou l, à la place des boucles for ? ou while ?
gagne t on toujours en rapidité ? :D


oui mais la différence se fait sentir sur des jeu de données assez important déjà, mais bon le terme "important" est toujours relatif :D. La réponse simple est oui.

Aussi quand on écrit un programme sous R, doit on se préocuper de l'espace alloué aux matrices ou vecteurs intervenants dans nos calculs par exemple comme en C ? si oui, l'équivalent de free c'est lequel ?.


Je n'ai pas vraiment de notion solide en C mais R étant un programme assez gourmand (et encore les progrès depuis les premières versions sont importants) si on manipule par exemples des matrices de plusieurs milliers de lignes il vaut mieux regarder comment améliorer la gestion de la mémoire. Je pense que si tu tapes mémoires dans la fonction rechercher du forum tu devrais pouvoir trouver des éléments de réponse. Sinon quelqu'un de compétent en C te répondra sans doute ;)

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Messagepar Stéphane Laurent » 27 Juin 2007, 16:02

Aussi quand on écrit un programme sous R, doit on se préocuper de l'espace alloué aux matrices ou vecteurs intervenants dans nos calculs par exemple comme en C ?


Si je kiffe R, c'est notamment parce qu'on n'a pas à se préoccuper de tout ça.
On peut définir une fonction dans une fonction, on fait ce qu'on veut.

Enfin moi je ne me soucie pas de l'optimalité de mes progs.

Alexandre LEKINA
Messages : 18
Enregistré le : 14 Juin 2007, 14:31
Contact :

Messagepar Alexandre LEKINA » 27 Juin 2007, 21:39

Stéphane Laurent a écrit : Si je kiffe R, c'est notamment parce qu'on n'a pas à se préoccuper de tout ça.
On peut définir une fonction dans une fonction, on fait ce qu'on veut.

Enfin moi je ne me soucie pas de l'optimalité de mes progs.


Le fait de pouvoir définir des fonctions à l'intérieur d'autres fonctions est vraiment trop cooooooool. ça simplifie énormément la tâche.

Mais bon si je posais la question, c'est tout simplement parce que je calibre actuellement une fonction de pénalité et la complexité est exponentielle. Du coup, il est hors de question de faire les boucles! Comme j'ai des matrices 32768*32768 ou 2147483648*2147483648, vous imaginez les dégâts qu'un "for" peut commettre si on a par exemple deux petites boucles imbriquées. Par contre je ne fais pas tourner ça sur un pc de bureau loool. C'est sur le super calculateur du labo.

Si on n'a pas à se préoccuper de libérer l'espace alloué aux matrices sous R , c'est vraiment le TOP!

Nicolas Péru a écrit :je pense que si tu tapes mémoires dans la fonction rechercher du forum tu devrais pouvoir trouver des éléments de réponse.


Oui j'y ai jeté un coup d'oeil. Mais pas d'une grande utilité dans mon cas.
Par contre je crois que linux, lui il sait gérer plus de 3Go de ram.
Parce j'ai essayé d'afficher l'état des processus quelques minutes apres avoir lancé ma programme. Oups mémoire occupé 9-10 Go de RAM pour une seule simulation (rire). Et j'en ai lancé 5 en parallèle. :lol:
Encore et toujours de la Sélection de Modèles

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 28 Juin 2007, 16:59

Bonjour,

En tout cas ssous windos de tel matrice peuvent ne pas exister du tout à cause d'un problème de mémoire. Le plus simple pour le savoir est de créer un vecteur de longeur n*p (lignes*colonne) et tu verras bien s'il t'affiche un message d'erreur disant qu'il ne peut pas créer un vecteur de tel longeur.

Maxime


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité