Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]caching

    Ciao.
    Devo creare un gestore di risorse , texture nel mio caso , ma puo' essere qualsiasi cosa.
    Dato che ho una serie di oggetti che condividono la stessa texture vorrei realizzare una cache con una mappa e uno shared pointer.
    Quello che non ho ben chiaro è come evitare di accedere alla mappa tutte le volte , impiegando tempo.
    Potrei da quello che ho capito accedere alla mappa solo la prima volta , quando creo l'oggetto e associo la texture , dopo non devo piu' accedre alla mappa , perchè ho il puntatore alla risorsa e qualsiasi cambiamento fatto dal gestore di risorse sulla texture in questione si riflette su tutti gli oggetti che usano quella texture.

    E' giusto?
    quindi la chiave stà nell accedere alla mappa se il puntatore nell oggetto alla texture non è ancora stato assegnato.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    up

  3. #3
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    impiegando tempo.
    Di che ordini parliamo? Secondi? Microsecondi? Femtosecondi?
    E poi relativo a che tipo di design dovresti applicare quello che chiedi?
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    il design è relativo ad un engine 3d, in particolare lo scenegraph(scena in cui sono inseriti tutti gli oggetti 3d con le loro caratteristiche)e che calcola le matrici di rotazione e di conversione dei sistemi di riferimento .
    ordine di tempo:
    ogni 1/60 di sec deve eseguire il caricamento o la modifica di al massimo 100/200 texture dalla mappa.
    è quasi niente?

    scusate per il post precedente , l'ho buttato giu in 3 min.
    ciao.

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Non so se è tanto o poco. A dire il vero credevo ti riferissi ai tempi di accesso alla mappa.
    Difficile dare una risposta univoca: dipende da che design hai adottato.
    In linea di massima potresti utilizzare un reference, all'interno di una specifica classe, legato all'elemento della mappa che ti serve. Però non devi rimuovere elementi o quel reference lo perdi per strada.
    Francamente non ho idea di come funzioni un engine grafico, ma ho l'impressione che quando inizi l'esecuzione si trovi tutto già precaricato in modo da perdere meno tempo possibile. Quindi nel tuo caso dovrai precaricare quelle 100/200 texture che devi usare.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  6. #6
    Per inciso, se punti alle performance ti conviene usare una unordered_map (aggiunta del tr1), che dovrebbe avere performance migliori della normale map e non invalidare gli iteratori agli elementi che non c'entrano nelle operazioni di aggiunta e rimozione. La unordered_map (di fatto una hashtable) ha inoltre tempo di accesso costante agli elementi (nel caso medio), il che dovrebbe andare bene per i tuoi scopi.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.