Frage

ich ein c ++ Programm geschrieben haben, möchte ich wissen, wie man die Zeit für die Ausführung genommen berechnen, so werde ich nicht die Frist nicht überschreiten.

#include<iostream>

using namespace std;

int main ()
{
    int st[10000],d[10000],p[10000],n,k,km,r,t,ym[10000];
    k=0;
    km=0;
    r=0;
    scanf("%d",&t);
    for(int y=0;y<t;y++)
    {
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
            cin>>st[i] >>d[i] >>p[i];
    }
    for(int i=0;i<n;i++)
    {
            for(int j=i+1;j<n;j++)
            {
                    if((d[i]+st[i])<=st[j])
                    {
                              k=p[i]+p[j];
                    }
                    if(k>km)
                    km=k;
            }
        if(km>r)
        r=km;
    }
    ym[y]=r;
}
    for( int i=0;i<t;i++)
    {
         cout<<ym[i]<<endl;
    }


    //system("pause");
    return 0;
}     

Das ist mein Programm, und ich will es frist 3 sec sein !! wie es geht ? ja sorry ich meinte Ausführungszeit !!

War es hilfreich?

Lösung

Wenn Sie Cygwin installiert haben, von ihm Bash-Shell ist, führen Sie die ausführbare Datei, sagen MyProgram, mit dem time Dienstprogramm, etwa so:

/usr/bin/time ./MyProgram

Dies wird berichten, wie lange die Ausführung Ihres Programms nahm - die Ausgabe in etwa wie folgt aussehen:

real    0m0.792s
user    0m0.046s
sys     0m0.218s

Sie können auch manuell Ihr C-Programm Instrument ändern sie die clock() Library-Funktion verwenden, etwa so:

#include <time.h>
int main(void) {
    clock_t tStart = clock();
    /* Do your stuff here */
    printf("Time taken: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
    return 0;
}

Andere Tipps

Mit C ++ 11 zum Messen der Ausführungszeit eines Stück Code, können wir das jetzt () Funktion:

auto start = chrono::steady_clock::now();

//  Insert the code that will be timed

auto end = chrono::steady_clock::now();

// Store the time difference between start and end
auto diff = end - start;

Wenn Sie die Zeitdifferenz zwischen Anfang und Ende in dem obigen Code drucken möchten, können Sie verwenden:

cout << chrono::duration <double, milli> (diff).count() << " ms" << endl;

Wenn Sie es vorziehen ns zu verwenden, werden Sie verwenden:

cout << chrono::duration <double, nano> (diff).count() << " ns" << endl;

Der Wert der diff Variable kann auch auf einen ganzzahligen Wert abgeschnitten werden, zum Beispiel, wenn Sie das Ergebnis wollen wie folgt ausgedrückt:

diff_sec = chrono::duration_cast<chrono::nanoseconds>(diff);
cout << diff_sec.count() << endl;

Für weitere Informationen klicken Sie auf hier

Übersicht

Ich habe eine einfache semantische Hack für diese Verwendung @AshutoshMehraresponse geschrieben. Sie Code sieht auf diese Weise wirklich lesbar!

MACRO

#include <time.h>

#ifndef SYSOUT_F
#define SYSOUT_F(f, ...)      _RPT1( 0, f, __VA_ARGS__ ) // For Visual studio
#endif

#ifndef speedtest__             
#define speedtest__(data)   for (long blockTime = NULL; (blockTime == NULL ? (blockTime = clock()) != NULL : false); SYSOUT_F(data "%.9fs", (double) (clock() - blockTime) / CLOCKS_PER_SEC))
#endif

VERWENDUNG

speedtest__("Block Speed: ")
{
    // The code goes here
}

OUTPUT

Block Speed: 0.127000000s

Hinweis: war die Frage, die ursprünglich über der Kompilierung, aber später stellte sich heraus, dass die OP wirklich Ausführungszeit bedeutete. Aber vielleicht wird noch diese Antwort für jemanden nützlich sein.

Für Visual Studio: nach Tools / Options / Projects and Solutions / VC++ Project Settings und Build Timing Option auf 'yes' gesetzt. Danach wird die Zeit von jedem Build wird im Ausgabefenster angezeigt werden.

Das sieht aus wie Dijstra-Algorithmus. In jedem Fall wurde die Zeit laufen an N. abhängen Wenn es länger als 3 Sekunden es dauert ist nicht so, wie ich es beschleunigen sehen können, da alle Berechnungen, dass es notwendig ist zu tun zu tun.

Je nachdem, was Problem, das Sie versuchten, lösen könnte es ein schnellerer Algorithmus sein.

ich verwendet habe, die Technik, die oben genannten, noch fand ich, dass die gegebene Zeit in dem Code: Blöcke IDE war mehr oder weniger ähnlich das Ergebnis obtained- (kann es durch kleines Mikro unterscheiden Sekunden) ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top