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

Discussion :

Cast et mémoire cache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut Cast et mémoire cache
    Bonjour, voila ce que je veux faire:
    quint8 toto=quint16 tata;
    J'aimerai savoir si le cpu vas lire les 16Bits, ou juste 8Bits (histoire de minimisé la pression sur le cache mémoire).
    Si il lit 16Bits, faire un static_cast<quint8>(quint16) résoudrai mon probléme?
    quint8 est un entier 8Bits (par Qt)
    quint16 est un entier 16Bits (par Qt)

    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 119
    Par défaut
    Citation Envoyé par alpha_one_x86 Voir le message
    Bonjour, voila ce que je veux faire:
    quint8 toto=quint16 tata;
    Salut,
    Qt, c'est du C++, pas du C, tu n'es pas au bon endroit.
    Citation Envoyé par alpha_one_x86 Voir le message
    J'aimerai savoir si le cpu vas lire les 16Bits, ou juste 8Bits (histoire de minimisé la pression sur le cache mémoire).
    Si il lit 16Bits, faire un static_cast<quint8>(quint16) résoudrai mon probléme?
    quint8 est un entier 8Bits (par Qt)
    quint16 est un entier 16Bits (par Qt)

    Merci d'avance.
    As-tu vraiment besoin de te poser ce genre de question ?
    Si oui, je dirais que la réponse dépend du matériel/compilo/âge du capitaine. Mais à priori, il y a plein d'optimisations envisageables avant d'en arriver là.

  3. #3
    Membre éclairé
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    Qt c'est du C++, mais la question porte sur du C (pas d'objet).

    La je suis arrivé au max coté optimisation, si je peu réduire:
    hash<quint32,toto>
    en:
    hash<quint16,toto> ou hash<quint8,toto>, je pense que ça aiderai, non?

  4. #4
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Salut,

    Citation Envoyé par alpha_one_x86 Voir le message
    Qt c'est du C++, mais la question porte sur du C (pas d'objet).
    Les différences entre C et C++ ne se limite pas à la notion d'objet. D'ailleurs tu présentes un code avec des templates inconnus par les dev C.

    Citation Envoyé par alpha_one_x86 Voir le message
    La je suis arrivé au max coté optimisation, si je peu réduire:
    hash<quint32,toto>
    en:
    hash<quint16,toto> ou hash<quint8,toto>, je pense que ça aiderai, non?
    Difficile de dire une réponse car je ne connais pas ta structure hash. Néanmoins, si quint est le type de la clé générée et toto l'objet hashé, alors plus la taille de ta clé sera petite et plus seront nombreuses les collisions en fonction de ton hasher.

    Je ne suis pas un spécialiste du cache mémoire, mais je te renvois vers un ebook expliquant très bien les détails si tu veux pousser ton optimisation : What every programmers should know about memory.

    HTH

  5. #5
    Membre éclairé
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    Je comprends. J'avais oublié que les templates, c'était aussi du C++.

    Ici, c'est:
    http://qt-project.org/doc/qt-4.8/qhash.html
    … qui me permet d'avoir un index sur un certain nombre d'objets ou pointeurs. Histoire de les retrouver rapidement.

    J'étais sur des entiers 32 bits, leur vrai ID. Or, pour économiser la bande passante, en fonction du nombre de joueurs max, je fais un index sur clef de 16 bits, clef soit envoyée directement, soit envoyée en 8 bits quand ça peut.

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Qt c'est du C++, mais la question porte sur du C (pas d'objet).
    Je dirais même que du Qt, c'est du Qt et que l'utilisation de structures Qt est du ressort du forum Qt. De plus, ta question porte sur l'utilisation de la classe Hash, donc d'un objet. Ce que tu souhaites faire (utiliser une classe plutôt qu'une autre de manière transparente en fonction de certaines contraintes) ressemble à du polymorphisme.

    Quant à tes questions, je pense que la réduction de la pression sur le cache-mémoire et la réduction de la bande passante sont deux problématiques qui n'ont rien à voir. Jouer avec la bande passante est faisable de manière assez certaine (envoyer 8 bits au lieu de 16 bits, c'est clair). Jouer avec le cache mémoire ressemble plus à de l'astrologie, à moins d'être bien calé dans le domaine.
    quint8 toto=quint16 tata;
    J'aimerai savoir si le cpu vas lire les 16Bits, ou juste 8Bits (histoire de minimisé la pression sur le cache mémoire).
    Quoi que je pense que ta ligne de code n'est pas celle que tu voulais écrire, si tu souhaites lire tata et toto, le programme n'a pas de choix que de les charger en entier et après de prendre que la partie intéressante pour le cast.

    Si oui, je dirais que la réponse dépend du matériel/compilo/âge du capitaine. Mais à priori, il y a plein d'optimisations envisageables avant d'en arriver là.
    Je partage cet avis. Je sais que certains processeurs font des accès uniquement de 32 bits à la mémoire, puisque c'est la taille de leur bus de données. Donc en demander 8 ou 16 ou 32, ça revient au moment : un accès à la mémoire.

Discussions similaires

  1. Visualiser la mémoire cache utilisée
    Par Aitone dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 18/12/2006, 20h37
  2. écran bleu [vider mémoire cache]
    Par gilleski2010 dans le forum Périphériques
    Réponses: 2
    Dernier message: 03/08/2006, 17h56
  3. Gestion d'une Mémoire Cache
    Par mehdi_31 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 11/07/2006, 14h09
  4. Problème Mémoire Cache
    Par Ryadus dans le forum Ordinateurs
    Réponses: 6
    Dernier message: 13/12/2005, 16h21
  5. mémoire cache
    Par cortex024 dans le forum Composants
    Réponses: 1
    Dernier message: 20/08/2005, 18h35

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