Page 1 sur 1

Fonctions MAP ??

Publié : dim. 18/oct./2009 11:55
par kwandjeen
J'essai de voir ce que cela peut apporter et les utilisations qui en découle. Si vous avez des infos / idées sur l'utilisation nous sommes preneur ^^.

Suite à un de mes projets j'ai essayé de voir si on pouvait gagner du temps dans les recherches d'une liste assisté par map.

Code : Tout sélectionner

Structure donnee
  nom.s
  taille.l
  posx.l
  posy.l
EndStructure

Global NewList planete.donnee()
NewMap id_planete.l()

For i=0 To 4
  AddElement(planete())
  Read.s planete()\nom
  planete()\taille = Random(4)+1
  planete()\posx = Random(100)
  planete()\posy = Random(100)
  AddMapElement(id_planete(),planete()\nom)
  id_planete() = @planete()
Next i

DataSection
  Data.s "valra","eden","kala","giga","tera"
EndDataSection

scan$ = "tera"
;recherche avec la liste
time = ElapsedMilliseconds()
For t=0 To 100000000
  ForEach planete()
    If planete()\nom = scan$
      taille1 = planete()\taille
      Break 1
    EndIf
  Next
Next t
time1 = ElapsedMilliseconds()-time

time = ElapsedMilliseconds()
For u=0 To 100000000
  ChangeCurrentElement(planete(),id_planete(scan$))
  taille2 = planete()\taille
Next u
time2 = ElapsedMilliseconds()-time

MessageRequester("test",Str(taille1)+"--"+Str(time1)+#CRLF$+Str(taille2)+"--"+Str(time2))
C'est un truc idiot mais je cherche ^^ des utilisations.

Re: Fonctions MAP ??

Publié : dim. 18/oct./2009 12:01
par kwandjeen
Tiens les maps prennent aussi les structures ça devient interessant

Code : Tout sélectionner

Structure donnee
  nom.s
  taille.l
  posx.l
  posy.l
EndStructure

Global NewList planete.donnee()
NewMap id_planete.donnee()

For i=0 To 4
  AddElement(planete())
  Read.s planete()\nom
  planete()\taille = Random(4)+1
  planete()\posx = Random(100)
  planete()\posy = Random(100)
  AddMapElement(id_planete(),planete()\nom)
  id_planete()\taille = @planete()
Next i

DataSection
  Data.s "valra","eden","kala","giga","tera"
EndDataSection

scan$ = "tera"
;recherche avec la liste
time = ElapsedMilliseconds()
For t=0 To 10000000
  ForEach planete()
    If planete()\nom = scan$
      taille1 = planete()\taille
      Break 1
    EndIf
  Next
Next t
time1 = ElapsedMilliseconds()-time

time = ElapsedMilliseconds()
For u=0 To 10000000
  ChangeCurrentElement(planete(),id_planete(scan$)\taille)
  taille2 = planete()\taille
Next u
time2 = ElapsedMilliseconds()-time

MessageRequester("test",Str(taille1)+"--"+Str(time1)+#CRLF$+Str(taille2)+"--"+Str(time2))

Re: Fonctions MAP ??

Publié : dim. 18/oct./2009 12:24
par Anonyme
Les MAP's sont très utiles pour la gestion d'une énorme base de données.
Imagine que tu as 500.000' entrées , et que tu dois faire des recherches régulières dedans , avec un tableau , il te faudrait parcourir tout les éléments pour trouvé ce que tu cherches.
ici , avec les map , plus besoin de parcourir les éléments , tu ajoutes une "clé" & cette clé est transformée en position dans le tableau.

Re: Fonctions MAP ??

Publié : dim. 18/oct./2009 13:15
par kwandjeen
Merci Cpl (toujours au courant (CPL)^^ Bon elle est nulle tout comme moi mais entre ancien mili on se comprend )

Effectivement dans mon projet je gère un système avec des planètes et je m'aperçois que la gestion par map au lieu de liste peut être avantageuse.

PS : depuis la version 4.3 il y a des changements vraiment intéressants, Purebasic n'est pas représenté à sa juste valeur c'est bien dommage.

Re: Fonctions MAP ??

Publié : dim. 18/oct./2009 14:25
par Ollivier
Kwandjeen a écrit :Si vous avez des infos / idées sur l'utilisation nous sommes preneur ^^.
Vous prenez les anti-virus?

Re: Fonctions MAP ??

Publié : dim. 18/oct./2009 18:30
par kwandjeen
Ollivier a écrit :
Kwandjeen a écrit :Si vous avez des infos / idées sur l'utilisation nous sommes preneur ^^.
Vous prenez les anti-virus?
Désolé Ollivier j'ai pas saisi :( . J'étais blonde dans une vie antérieure :mrgreen:

Edit: sinon oui depuis que ma femme c'est fait pirater son ordi c'est un de mes objectifs de faire un antimalware et un scruteur de process avec kill, vérif registre, interaction process pour détecter les réamorçage. Mais un peu plus tard je me qualifie de Novice et programmer est un hobby je dois jongler avec mon boulot, mes filles et ma femme ^^.

Re: Fonctions MAP ??

Publié : lun. 19/oct./2009 8:21
par Fred
Un exemple simple: la coloration syntaxique de l'IDE a en mémoire tous les noms de commandes pour savoir si c'est une fonction ou pas. Il suffit de créer une map avec tous les noms de commandes (qui sont forcement uniques) et tu peux savoir tres rapidement si ton mot est une commande ou pas. C'est beaucoup plus rapide que de parcourir une liste contenant ces mots (meme triée) car l'implementation est faite pour ce genre d'utilisation.

Re: Fonctions MAP ??

Publié : lun. 19/oct./2009 17:29
par kwandjeen
Merci pour vos réponses et merci le grand manitou :D

Bon je dois revoir ma gestion de système pour mon projet mais je vais gagner en vitesse de recherche.

Re: Fonctions MAP ??

Publié : lun. 19/oct./2009 17:56
par comtois
kwandjeen a écrit :Edit: sinon oui depuis que ma femme c'est fait pirater son ordi c'est un de mes objectifs de faire un antimalware et un scruteur de process avec kill, vérif registre, interaction process pour détecter les réamorçage. Mais un peu plus tard je me qualifie de Novice et programmer est un hobby je dois jongler avec mon boulot, mes filles et ma femme ^^.
Un autrichien a écrit un article sur ce sujet ( en anglais ) , il utilise PureBasic pour écrire son outil , le source est disponible :
http://cert.at/downloads/papers/mass_ma ... is_en.html

Re: Fonctions MAP ??

Publié : lun. 19/oct./2009 18:01
par kwandjeen
lol génial Comtois ça va bien m'aider. Je vais m'imprimer ça pour bucher au boulot :lol:

Re: Fonctions MAP ??

Publié : lun. 19/oct./2009 20:52
par Backup
Hardy avait bossé un peu le sujet a lire ici :

http://www.purebasic.fr/french/viewtopic.php?f=3&t=2311