Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577

    [C/C++] la QueryPerformanceCounter()

    sto usando la funzione QueryPerformanceCounter() per avere una lettura precisa dei tempi di esecuzione del mio codice.

    Esso è costituito di 3 thread:

    - produttore
    - consumatore
    - scrittore

    Produttore e consumatore condividono un array che però viene "bloccato" da un mutex allo scopo di evitare incosistenza dei dati.

    Per non appesantire troppo l'argomento lo pseudocodice è il seguente:

    //PRODUTTORE
    t1=QueryPerformanceCounter() // inizio misurazione
    semaforo_rosso // così nessun altro può usare l'array sino al completo riempimento
    riempi_array()
    semaforo_verde // rilascio il semaforo per il thread consumatore
    sleep(500) // lascio spazio agli altri thread

    mi si perdonino le imprecisioni ma tale pesudocodice serve solo per far capire come lavora il codice, quindi t1=QueryPerformanceCounter() mette in t1 il tempo iniziale

    //CONSUMATORE
    semaforo_rosso // così nessun altro può usare l'array sino al completo riempimento
    usa_array()
    setta_evento()
    semaforo_verde // rilascio il semaforo per il thread produttore
    sleep(500) // lascio spazio agli altri thread

    //SCRITTORE
    attesa_evento
    t2=QueryPerformanceCounter() // fine misurazione e stampa di t2-t1
    scrivi_array()
    sleep(500)

    tra i thread produttore e scrittore mi aspettavo tempi dell'ordine dei 500 ms invece vedo sempre tempi dell'ordine di, alcuni esempi:

    1.1 1, (1000) [[[16,9099704012661]]]
    10.1 1, (1500) [[[77,5355527029273]]]
    1.1 0, (500) [[[16,9239386570081]]]
    12.3 0, (1500) [[[77,5456098470616]]]
    0.6 0, (1500) [[[16,892649764146]]]
    8.2 1, (500) [[[79,5279847019663]]]
    0.6 1, (500) [[[16,8954434152944]]]

    tra le quadre i tempi rilevari tra t2-t1 che non mi spiego

    grazie

    p.s.
    spero si capiscano i miei dubbi

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    La funzione però non restituisce tempi.
    Per calcolare il tempo trascorso devi usare anche QueryPerformanceFrequency.
    Qui un esempio.
    http://www.decompile.com/cpp/faq/windows_timer_api.htm
    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.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Originariamente inviato da shodan
    La funzione però non restituisce tempi.
    Per calcolare il tempo trascorso devi usare anche QueryPerformanceFrequency.
    Qui un esempio.
    http://www.decompile.com/cpp/faq/windows_timer_api.htm

    ciao,
    la uso già nel modo corretto, quello da me citato era solo per abbreviare vedi: http://stackoverflow.com/questions/1...ormancecounter

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.