Domanda

io in realtà non vogliono profilo perché mi mancava di fare tanti piccoli punti di riferimento diversi su diverse funzioni semplici. Per la vita di me non riesco a trovare un modo per registrare la quantità di millisecondi in C ++, sto usando Linux per la via.

Si può suggerire il metodo per ottenere l'orologio di sistema in millisecondi (io possa risolvere con secondi se non riesco a trovare un modo semplice ..) e quello che un colpo di testa che sono inclusi nel?

È stato utile?

Soluzione

utilizzando la funzione gettimeofday da file di intestazione sys/time.h, io uso questa classe:

#include <cstdlib>
#include <sys/time.h>

class Timer
{
    timeval timer[2];

  public:

    timeval start()
    {
        gettimeofday(&this->timer[0], NULL);
        return this->timer[0];
    }

    timeval stop()
    {
        gettimeofday(&this->timer[1], NULL);
        return this->timer[1];
    }

    int duration() const
    {
        int secs(this->timer[1].tv_sec - this->timer[0].tv_sec);
        int usecs(this->timer[1].tv_usec - this->timer[0].tv_usec);

        if(usecs < 0)
        {
            --secs;
            usecs += 1000000;
        }

        return static_cast<int>(secs * 1000 + usecs / 1000.0 + 0.5);
    }
};

Ad esempio:

#include <iostream>
#include <string>
#include <sstream>

int main()
{
    Timer tm;
    std::ostringstream ooo;
    std::string str;

    tm.start();
    for(int i = 0; i < 10000000; ++i)
    {
        ooo << "This is a string. ";
    }
    tm.stop();
    std::cout << "std::ostingstream -> " << tm.duration() << std::endl;

    tm.start();
    for(int i = 0; i < 10000000; ++i)
    {
        str += "This is a string. ";
    }
    tm.stop();
    std::cout << "std::string -> " << tm.duration() << std::endl;
}

Altri suggerimenti

Se si sta utilizzando CPU x86, è possibile utilizzare istruzioni assembler RDTSC http://en.wikipedia.org / wiki / RDTSC per ottenere il numero di orologi CPU tra all'esecuzione di due (o più) comandi. Ma: 1. Tutti i comandi RDTSC dovrebbero funzionare su core della CPU stessa (nel caso in cui se si dispone di più CPU core). 2. CPU dovrebbe essere eseguito in frequenza di clock costante (gestione della potenza della CPU dovrebbe essere disabilitata).

Dima

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top