Ich habe in C++ mir bereits 2 Funktionen für die Zeitmessung geschrieben
Code: Alles auswählen
// fuer zeitmessung
#include<sys/times.h>
#include<unistd.h>
//! parameter fuer die zeitmessung
struct tms x1,x2;
//! parameter fuer die zeitmessung
long ticks;
//! parameter fuer die zeitmessung
float tu,ts;
void TinaHandling::setTimeStart()
{
ticks=sysconf(_SC_CLK_TCK); //maschinenspezifische Ticks der Uhr
times(&x1);
}
void TinaHandling::setTimeEnd(string Message)
{
// ende zeitmessung
times(&x2);
tu=(x2.tms_utime-x1.tms_utime)/ ( (float) ticks);
ts=(x2.tms_stime-x1.tms_stime)/ ( (float) ticks);
cout << "user: " << tu << " sec system: " << ts << " sec : \t" << Message << endl;
}
Code: Alles auswählen
setTimeStart();
ostringstream cmd;
// kommando zum ausfuehren "./tina output.abs.net > output.abs.tina
// -Cm ZAHL damit "A -> A B" erkannt wird: 0 macht falsche Aequivalenzklassen, besser 1
// -g keine Liveness-Analyse
// -lt : Aktionen anstatt Transitionen im Erreichbarkeitsgraph "0 -> a/1, b/5"
cmd << Tina << " -Cm " << CMDepth << " -g " << filename_net << " > " << filename_abs << ".tina";
// TODO: Zeitmessung stimmt nicht, es wird nicht auf das System gewartet, Zeit ist immer 0s!
system(cmd.str().c_str());
setTimeEnd("Tina hat die Analyse beendet");
Wie kann ich sagen, er soll bei der Zeitmessung auf das Ende vom Systembefehl warten?
mfg
Stephan