Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di fausto
    Registrato dal
    Jun 2002
    Messaggi
    294

    c++] cpu timer con chiamata system()

    Il mio problema e' il seguente.
    Ho un codice c++ che ad un certo punto fa una chimata a system(comando) dove comando e' un altro programma al cui codice non ho accesso.
    Vorrei ottenere il cpu time complessivo del run, ma mi sono accorto che il cpu time che calcolo non tiene in considerazione quello speso durante la chiamata system.

    La classe che ho scritto si basa su <sys/times.h>. Ho fatto diverse prove fra cui (in soldoni)
    total_time = utime + stime + cutime + cstime

    ma il risultato e' sempre uguale, la system() non viene calcolata.

    Cosa posso fare?
    laptop asus L5800C
    slackware 11.0 kernel 2.6.17

  2. #2
    Utente di HTML.it L'avatar di fausto
    Registrato dal
    Jun 2002
    Messaggi
    294


    No, scusate ho detto una boiata.

    E' che nel codice di prova avevo fatto una chiamata system(sleep 5) e il timer non contava per lo sleep, suppongo. Se faccio invece system(comando) il timer conta eccome.

    Scusate,
    f
    laptop asus L5800C
    slackware 11.0 kernel 2.6.17

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Questo perche' la system avvia un altro processo ma non attende la sua chiusura e quindi il tempo impiegato e' indipendente dal processo chiamato (si limita ai pochi microsecondi relativi alla creazione del processo).

    Se vuoi calcolare anche il tempo impiegato dal processo, devi attendere che questo termini.

    Come farlo dipende dal sustema operativo con cui operi ...

  4. #4
    Utente di HTML.it L'avatar di fausto
    Registrato dal
    Jun 2002
    Messaggi
    294
    scusa, non ho capito bene:

    "Questo perche' la system avvia un altro processo ma non attende la sua chiusura e quindi il tempo impiegato e' indipendente dal processo chiamato (si limita ai pochi microsecondi relativi alla creazione del processo)."

    Immagino ti riferisci alla system in generale. Ora, non ho gli strumenti per capire se il timing e' corretto Di sicuro so che nel caso in cui faccio sytem(comando) e considero anche il cutime e cstime (che sta per children user e system time) il timer conteggia del tempo impiegato durante la system. Ripeto, se poi non e' preciso, questo non so verificarlo.

    Invece se faccio system("sleep 5"), il timer non conta proprio niente e questo credo perche' lo sleep effettivamente non usa cpu.

    Pero' queste prove sembrerebbero confutare la tua frase, perche' parrebbe che in realta' il programma aspetta che la system termini prima di proseguire. Anzi ne sono abbastanza sicuro: nel mio programma il comando chiamato dalla system fa un sacco di calcoli e le prime istruzioni che seguono utilizzano proprio informazioni provenienti dal comando.

    laptop asus L5800C
    slackware 11.0 kernel 2.6.17

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.