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

Algorithmes et structures de données Discussion :

Regroupements d'objets par adresse


Sujet :

Algorithmes et structures de données

  1. #1
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 916
    Points : 1 930
    Points
    1 930
    Par défaut Regroupements d'objets par adresse
    Bonjour

    J'ai une liste de d'objets placés dans un espace mémoire de 100 000octets avec une adresse et une taille en mémoire (de 1 à 4 octets par objet)
    Ces objets ne sont pas forcements continus dans l'espace mémoire.

    Je dois regrouper ces objets par paquets
    Il doit y avoir le moins de paquets possible
    un paquet a une taille maximum de 250octets (prendre en compte la taille des objets)
    un paquet doit être le plus petit possible (moins d'espaces vide possible)

    exemple :
    Adrr Taille
    0 1

    248 1
    249 2
    261 1
    262 1

    il me faut trouver
    -1 paquet contenant 0
    -1 paquet contenant 248 à 262

    si le premier paquet englobait 0 à 248 on aurait le même nombre de paquets mais plus de "trous"...

    Comment aborderiez vous un algorithme capable de déterminer la meilleure configuration ?

    Merci par avance pour votre aide

    PS : ce sera programmé en C#.
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 410
    Points : 5 801
    Points
    5 801
    Par défaut
    salut
    donc si je comprend bien tu veut te créer des paquet avec un intervalle d'adresse mémoire de max 255 octets

    donc dans le meilleur des cas
    1..255
    256..512 ....
    tu as un tas de 100 000 octet
    donc dans les meilleur des cas si tout étais remplis tu aurais 393 paquet

    dans l'exemple que tu nous fournit on vois très clairement un large trou dans tes adresses mémoire et tu aimerais ne pas avoir autant de trou
    sans trop réfléchir je me dis qu'il faut que tu calcul l’écart type
    en connaissant l’écart type il est donc aisé de définir tes groupe de façons homogène
    ensuite il te faudra peut être épurer tes paquets pour ne prendre que les valeur contenue dans les intervalles
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 916
    Points : 1 930
    Points
    1 930
    Par défaut
    Bonjour
    Citation Envoyé par anapurna Voir le message
    donc si je comprend bien tu veut te créer des paquet avec un intervalle d'adresse mémoire de max 255 octets
    max 250 mais on s'en moque

    Citation Envoyé par anapurna Voir le message
    donc dans les meilleur des cas si tout étais remplis tu aurais 393 paquet
    Si tout était rempli oui mais ce sera jamais le cas, l'espace de 100 000octets peut contenir que 1 objet à n'importe qu'elle position (là l'algo est pas compliqué ) à quelques dizaines ou centaines d'objets répartis de manière totalement aléatoire dans l'espace mémoire. Du coup je peux très bien rechercher qu'un seul bloc s'il n'y a que 250 entre l'adresse de l'objet la plus grande et l'adresse la plus faible.

    Pareil pour les vides : Le premier objet n'est pas forcement à 0 et il y aura un nombre totalement inconnu de vides avant le prochain objet et s'il y a 2 fois le même nombre de vide c'est pur hasard.

    Je ne vois vraiment aucune trace de quoi que ce soit de prévisible ou statistique dans la position des objets et des vides dans les 100 000octets. A chaque fois des objets auront été positionnés arbitrairement par une "concepteur" et un "utilisateur" aura choisi encore une fois arbitrairement de garder ou pas tout ou partie des objets ; ça fait 2 choses aléatoires qui aboutissent au positionnement des objets qui m'intéressent.


    Citation Envoyé par anapurna Voir le message
    dans l'exemple que tu nous fournit on vois très clairement un large trou dans tes adresses mémoire et tu aimerais ne pas avoir autant de trou
    Dans l'exemple que je donne je compare le comportement recherché avec la recherche un peu mecanique qui consiste à partir de 0 puis quand on trouve un objet on commence un bloc et on met dedans les 250o qui suivent. Dans l'exemple on se retrouve alors avec un premier bloc avec un enorme trou, suivi d'un second bloc minus alors que la "bonne" solution consiste à avoir un premier bloc d'un seul objet (0) et un deuxième bloc pour le reste, sans trou

    Citation Envoyé par anapurna Voir le message
    sans trop réfléchir je me dis qu'il faut que tu calcul l’écart type
    en connaissant l’écart type il est donc aisé de définir tes groupe de façons homogène
    ensuite il te faudra peut être épurer tes paquets pour ne prendre que les valeur contenue dans les intervalles
    Je comprends vite mais il faut m'expliquer doucement, surtout pour les probabilités... serait il possible de m'illustrer l'idée ?

    Je vois l’écart type comme une valeur unique qui caractériserait mon espace mémoire, j'ai bien du mal à voir comment il peut m'aider à positionner les blocs.

    Merci beaucoup
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 410
    Points : 5 801
    Points
    5 801
    Par défaut
    salut

    l’écart type te donne la dispersion moyenne de tes éléments dans ton espace plus l’écart est grand plus tes éléments sont disparate et non homogène
    dans notre cas cela donne environ 114
    en sachant qu'avec 250 tu as 2 écart type soit environ 80% de la population
    il ne te reste plus qu'a choisir la solution qui remplit au mieux cette affirmation
    j'avais bien dis que c’était sans réfléchir ^^
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 038
    Points : 9 347
    Points
    9 347
    Par défaut
    Etape n°1 : Tu calcules les longueurs des 'trous', et tu repères tous les trous qui font plus de 250 ( ... plus précisément les trous qui vérifient, si longueur trou + longueur_objet_avant+_longueur_objet_après >250 )

    Cest trous sont des frontières intangibles.

    Ainsi au lieu d'avoir un problème avec peut-être 20000 objets, tu as n problèmes plus simples à résoudre.

    Dans chacun des 'pays' ainsi définis, le nombre de paquets est facile à calculer : Si un pays commence à l'adresse a et finit à l'adresse b, il faudra quoi que tu fasses faire exactement partieentiere(( b-a+1)/250) paquets ( ( a vérifier si b-a+1 est un multiple de 250...)

    Et ensuite.. mais là je suis moins sûr, il faut repérer dans cet intervalle a,b le plus gros trou, et peut-être itérer en cherchant à chaque fois le plus gros trou.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 410
    Points : 5 801
    Points
    5 801
    Par défaut
    salut

    l'histoire des pré-traitement que conseil tbc92 sont effectivement à mettre en place en premier lieu
    ensuite je suis moins certain pour sa simple division par 250
    imaginons le pire des cas tu as 1 et le suivant 248 ensuite tout se suis régulièrement tu risque de te retrouver avec un beau gruyère
    je pense sincèrement que cela devrait être plus fin
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  7. #7
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 916
    Points : 1 930
    Points
    1 930
    Par défaut
    voilà le sujet de mon cramage de neurone depuis 4jours
    A force de tourner en rond je perds l'équilibre

    Dans la mesure ou je n'ai pas besoin de performance j'ai pensé à faire n configurations et les comparer ensuite pour choisir la meilleur, plutôt que de chercher à faire mouche sur LA bonne config directement.
    Mais pour cette technique bourrine je n'arrive pas à poser ce que sont les n configurations possibles.
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 410
    Points : 5 801
    Points
    5 801
    Par défaut
    salut

    tu aurais un exemple concret de valeur à exploiter ?
    histoire de voir si il n'y a pas des regroupement ou simplification a faire

    PS au faites quand tu écrit 249 - 2 ... cela veut dire que l'objet commence en 249 et finis en 250
    je suppose que pour un même objet les adresse sont aligné
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  9. #9
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 916
    Points : 1 930
    Points
    1 930
    Par défaut
    voici un exemple ci joint

    Si ça peut aider à la compréhension les objets sont des paramètres placés à différentes adresses dans une table que l'on peut lire que grâce à une lecture séquentielle de 1 à 250 espaces mémoire.

    Ça me fait penser que le mon problème est encore plus compliqué que ce que j'ai annoncé et la solution de calculer toutes les solutions puis de prendre la meilleure est peut être pas mal : en effet ce qui compte pour moi c'est de réduire le temps de communication, sachant qu'il y a une durée de com proportionnelle au nombre d'octet lu (réduire les trous pour éviter de passer du débit inutile) mais aussi très impactée par un timeout de réponse en cas de pépin. Ce timeout est souvent >> à la durée de com elle même (d'où l’intérêt de lire en bloc même s'il y a des trous pour limiter le nombre de timout). Mes critères exposés en #1 sont donc partiellement faux. Ce qui compte c'est le temps de com des blocs déterminés.

    Dans l'hypothèse d'un calcul de toutes les configurations possibles, comment je peux déterminer toutes les configurations possibles ? quel en serait le nombre ?

    Merci de vous pencher sur mon casse tête parce que perso j'ai fait champagne avec !
    Fichiers attachés Fichiers attachés
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  10. #10
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 038
    Points : 9 347
    Points
    9 347
    Par défaut
    Si je reprends ma définition de pays, je disais que pour un pays, le nombre de paquets pouvait être calculé de façon certaine par une formule.
    Rectification n°1 : la bonne formule aurait dû être : N = Partieentiere( (b-a+249) / 250 )
    Mais, dans certains cas, il faudra plus de N paquets.
    Exemple de données : On a 5 objets :
    obj1 , de adr = 1001 à adr =1005
    obj2 , de adr = 1201 à adr =1205
    obj3 , de adr = 1240 à adr =1260
    obj4 , de adr = 1320 à adr =1330
    obj4 , de adr = 1490 à adr =1500
    La formule précédente donne N= 2, je pensais que ça suffirait, en faisant un premier paquet de 1 à 250,et un 2ème paquet de 251 à 500.
    Mais en faisant ainsi , on a une partie de obj3 qui est dans le premier paquet, et une partie de obj3 dans le 2ème paquet.

    Question à PetitOurs : Est-ce qu'on s'autorise à couper obj3 comme décrit ci-dessus ? Ca ne semble pas incompatible avec la description générale du problème.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  11. #11
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 916
    Points : 1 930
    Points
    1 930
    Par défaut
    Si c'est carrément impossible par ce que chaque réponse est traitée dans la foulée donc si on reçoit qu'un bout d'un objet c'est cuit.

    Mais faut peut être réfléchir avec des objets tous de taille 1 déjà, je ne voudrais pas vous cramer les neurones comme je me suis cramé
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  12. #12
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 410
    Points : 5 801
    Points
    5 801
    Par défaut
    salut

    en faisant une simulation rapide sur ecxel
    donc on as 2 groupe

    5410 - 6356
    8356 - 11132

    en divisant ces deux groupe par 250 on obtient
    5 paquets pour le premier groupe
    et 17 paquet pour le second
    la méthode est simple je divise par 250 que j'arrondi auquel j'ajoute 1
    je l'ai fait dans les deux sens on obtient le même nombre mais les arrangement sont différent
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  13. #13
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 916
    Points : 1 930
    Points
    1 930
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Exemple de données : On a 5 objets :
    obj1 , de adr = 1001 à adr =1005
    obj2 , de adr = 1201 à adr =1205
    obj3 , de adr = 1240 à adr =1260
    obj4 , de adr = 1320 à adr =1330
    obj4 , de adr = 1490 à adr =1500
    suivant la durée du timeout de com on est dans un cas (peu de paramètres par bloc) où il est fort probable qu'il soit plus rapide de faire des blocs de 1 objet plutôt que de les regrouper.

    Je suis désolé de l'avoir zappé dans ma question initiale mais l'expression de mon problème a recadré mes neurones et en fait il est impossible de se déconnecter du problème durée du timout.

    En fait une fois que l'on a la taille en octet d'un bloc on a 2 durées qui valent grosso modo:
    12ms + timeout(durée variable de 20 à 500ms environ mais c'est la même pour tous les objets, ouf)
    ou 12ms + 1.04*(5+NbOctetsLus)
    On garde la plus grande des 2 valeurs et on doit faire que les blocs offre la durée la plus faible possible.

    En reposant ça il m'apparait de plus en plus évident qu'il faut comparer plusieurs stratégies plutôt que de chercher à trouver directement la bonne. La question étant alors de savoir combien il y a de configurations possible...

    Merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  14. #14
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 038
    Points : 9 347
    Points
    9 347
    Par défaut
    Ton dernier message n'est pas très clair ... 12ms + timeout, tu dis que ça vaut 12ms + 20ms , ou bien 12ms + 500ms ...20ms ou 500ms de timeout, ce n'est pas du tout la même chose.
    Si le timeout est de 500 ms, alors 12ms + 500ms, ce sera de toutes façons plus grand que 12ms + 1.04* (5 + nbOctetsLus) , et donc on est dans le même énoncé que depuis le début, il faut faire en sorte d'avoir un nombre MINIMUM de paquets.

    Par contre, si le timeout est de 20ms, alors il faut un compormis : pas top de paquets, mais pas non plus des paquets 'gruyères'.

    Je pense que le premier problème pouvait se résoudre de manière directe (algorithme en O(n) ou à peu près).
    Par contre s'il faut faire un compromis entre pas trop de paquets, et pas trop de gruyère, alors ça va passer par du parcours d'arbre.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  15. #15
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 916
    Points : 1 930
    Points
    1 930
    Par défaut
    J'ai du être clair parce que c'est exactement ça

    A ma question initiale j'avais zappé le timout et j'étais (depuis des jours) à la recherche de LA solution directe mais de vous exploser mon problème m'a permis de me rendre compte que mon besoin n'était pas là, qu'il fallait prendre en compte en plus timout qui varie beaucoup.
    Le parcours d'arbre semble ressembler à ce que j'entends pas "explorer toutes les configurations".

    Je vois que le parcours d'arbre est récursif, je peux calculer toutes les configurations de manière récursive là ?

    PS: même si ça prend plusieurs secondes de calcul ce n'est pas gênant, ça se calcule qu'une seule fois.

    Merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  16. #16
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 038
    Points : 9 347
    Points
    9 347
    Par défaut
    J'avais juste envie de dire que ce n'était pas clair

    Oui, le parcours d'arbre , c'est le parcours de toutes les combinaisons. Ca s'appelle parcours d'arbre, parce que dans un premier temps, on va examiner toutes les combinaisons où obj1 et obj2 sont dans le même paquet (demi-arbre n°1) , puis on va examiner toutes les combinaisons où obj1 et obj2 sont dans 2 paquets séparés, et ainsi de suite, dans chaque demi-arbre.
    Dans la pratique, il y a certainement moyen d'éliminer assez vite les branches qui conduisent vers des solutions peu performantes.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  17. #17
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 916
    Points : 1 930
    Points
    1 930
    Par défaut
    bon vous m'avez déjà sauvé parce que je suis sur la voie ! milles merci, même si vous n'allez pas arranger mon mal au crane !

    Mais si vous voyez comment peut se faire l'arbre je suis preneur parce que je vois pas bien... j'aurais bien fait varier la taille des blocs de 1 à 250 (dans la mesure ou les trous dans les données le permettent)ca fait plus de 31000 configurations possibles mais ça ne couvre pas tous les cas quand même
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  18. #18
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Citation Envoyé par petitours Voir le message
    ... vous exp[l]oser mon problème m'a permis de me rendre compte que mon besoin n'était pas là ...
    Excellente remarque !
    Prends le temps de définir précisément ton besoin.
    Quand tu l'auras défini il y a des chances que la solution apparaisse immédiatement. Si ce n'est à toi, alors à un lecteur du forum. Pour le moment je n'ai rien compris.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  19. #19
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 916
    Points : 1 930
    Points
    1 930
    Par défaut
    Bonjour
    Je reformule alors :

    Dans un espace mémoire de 100 000 octets j'ai des objets (ou paramètres) qui sont rangés de manière aléatoire. Ils ont une taille de 1 à 8 octets et sont séparés (ou pas) par des espaces mémoire non utilisés.
    Dans l'espace mémoire j'ai de l'ordre de 100 objets.

    Le besoin est de lire le plus rapidement tous les objets/paramètres présents dans l'espace mémoire sachant que
    >Je peux lire de 1 à 250 octets d'un coup de manière séquentielle
    >chaque cycle de lecture n'a pas besoin de faire la même taille.
    >je ne peux pas couper en 2 les 2, 4 ou 8 octets d'un objet/paramètre
    >je peux lire des octets vides entre 2 objets/paramètres si cela fait gagner du temps (limite le nombre de cycles de lecture)
    >la durée d'un cycle de lecture sera :
    soit de ou 12ms + 1.04*(5+NbOctetsLus) si la lecture se passe bien
    soit de 12ms + timeout (durée de 20 à 500ms environ mais fixe pour tous les cycles de lecture)
    et on choisira la plus longue durée entre les 2.

    Si je lis tous les objets/paramètres 1 par un alors le timeout devient très vite (quasi toujours d’après mes simulations) problématique
    La question c'est donc comment regrouper les objets pour optimiser la durées des cycles ?

    Il semblerait que la solution serait de calculer la durée de toutes les configurations possibles et de retenir la plus rapide (.
    Mais comment déterminer tous les configurations possibles (taille des blocs lus d'un coup, position des dits blocs...) ?

    Merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  20. #20
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 410
    Points : 5 801
    Points
    5 801
    Par défaut
    salut

    donc si je comprend bien tu as
    100(objets) *8(octets) = 800 octets pour un espace mémoire de 100000 octet
    soit ton univers pourrait contenir 125 fois la taille maxi des tes objets (100*8)
    on sait que dans un paquet de 250 tu peut avoir au plus 31 objets de 8 octets
    ce qui veut dire que tu devrais pouvoir envoyer le tout en 4 paquets sans espaces
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

Discussions similaires

  1. retour tableau d'objets par service web axis jboss
    Par TrollMaster dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 27/11/2005, 22h45
  2. [JACOB] Comment passer un objet par référence à une méthode
    Par zlavock dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 21/03/2005, 19h28
  3. [Debutant(e)]passage par adresse?
    Par cap2fosse dans le forum Langage
    Réponses: 4
    Dernier message: 24/09/2004, 11h05
  4. [Socket] Envoi de texte et d'objets par socket
    Par ced dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 05/08/2004, 10h07
  5. [ JSP ][ Débutant ] Passage d'objet par un forward
    Par captainpouet dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 08/04/2004, 11h33

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