diff --git a/maca_common/include/ProgramParameters.hpp b/maca_common/include/ProgramParameters.hpp index 2299fd2942e15bf2397860f773bd6c922e7b102d..2cd815ae7360bebaff2ec6a5938fac2ab22179de 100644 --- a/maca_common/include/ProgramParameters.hpp +++ b/maca_common/include/ProgramParameters.hpp @@ -46,6 +46,7 @@ struct ProgramParameters static int nbTrain; static bool randomEmbeddings; static bool printEntropy; + static bool printTime; static std::string sequenceDelimiterTape; static std::string sequenceDelimiter; diff --git a/maca_common/include/util.hpp b/maca_common/include/util.hpp index fc012e7f77bbc0fe3dfe25e51f0dc2497c318182..0ad31ce09049bc49a6cafa8ca1ba31bbbbee0ac8 100644 --- a/maca_common/include/util.hpp +++ b/maca_common/include/util.hpp @@ -163,6 +163,11 @@ std::string float2str(float f, const char * format); /// @return s without suffix at the end. std::string removeSuffix(const std::string & s, const std::string & suffix); +/// @brief Return a string with the current system time. +/// +/// @return Current system time. +std::string getTime(); + /// @brief Macro giving informations about an error. #define ERRINFO (getFilenameFromPath(std::string(__FILE__))+ ":l." + std::to_string(__LINE__)).c_str() diff --git a/maca_common/src/ProgramParameters.cpp b/maca_common/src/ProgramParameters.cpp index 6ac3fe53de6461ee5b5b41bdd7336a9cf39df42c..43604b5bbc7763887f83a4143872a9c9ff9845d5 100644 --- a/maca_common/src/ProgramParameters.cpp +++ b/maca_common/src/ProgramParameters.cpp @@ -39,6 +39,7 @@ float ProgramParameters::dynamicProbability; bool ProgramParameters::showFeatureRepresentation; bool ProgramParameters::randomEmbeddings; bool ProgramParameters::printEntropy; +bool ProgramParameters::printTime; int ProgramParameters::iterationSize; int ProgramParameters::nbTrain; std::string ProgramParameters::sequenceDelimiterTape; diff --git a/maca_common/src/util.cpp b/maca_common/src/util.cpp index 6d8fc121e8a0f7742aa8a34768f660c6df20780b..5bfa71d72ba3897bfee72f3396340279961d69ad 100644 --- a/maca_common/src/util.cpp +++ b/maca_common/src/util.cpp @@ -1,6 +1,7 @@ #include "util.hpp" #include <algorithm> #include <cstring> +#include <ctime> bool isAlpha(char c) { @@ -360,3 +361,14 @@ std::string removeSuffix(const std::string & s, const std::string & suffix) return result; } +std::string getTime() +{ + time_t rawtime; + char buffer[80]; + + time (&rawtime); + + strftime(buffer, sizeof(buffer), "%H:%M:%S", localtime(&rawtime)); + return std::string(buffer); +} + diff --git a/trainer/src/Trainer.cpp b/trainer/src/Trainer.cpp index fda7506355bac76748a46aa8cef7d9cab11f7073..3f43c060a84b6664f541365e4b6b58546783ec5d 100644 --- a/trainer/src/Trainer.cpp +++ b/trainer/src/Trainer.cpp @@ -96,7 +96,9 @@ void Trainer::train() { Dict::createFiles(ProgramParameters::expPath, ""); - fprintf(stderr, "Training of \'%s\' :\n", tm.name.c_str()); + fprintf(stderr, "%sTraining of \'%s\' :\n", + ProgramParameters::printTime ? ("["+getTime()+"] ").c_str() : "", + tm.name.c_str()); auto resetAndShuffle = [this]() { @@ -318,6 +320,8 @@ void Trainer::printScoresAndSave(FILE * output) if (ProgramParameters::interactive) fprintf(stderr, " \r"); + if (ProgramParameters::printTime) + fprintf(output, "[%s] ", getTime().c_str()); fprintf(output, "Iteration %d/%d :\n", curIter+1, ProgramParameters::nbIter); printColumns(output, {names, acc, train, dev, savedStr}); diff --git a/trainer/src/macaon_train.cpp b/trainer/src/macaon_train.cpp index 41f9b4285ca30470783edb9b64982b5a08efcc7e..980b2d08b5f9105c46a228b1269ac5a124b6d95b 100644 --- a/trainer/src/macaon_train.cpp +++ b/trainer/src/macaon_train.cpp @@ -68,6 +68,7 @@ po::options_description getOptionsDescription() "The name of the buffer's tape that contains the delimiter token for a sequence") ("sequenceDelimiter", po::value<std::string>()->default_value("1"), "The value of the token that act as a delimiter for sequences") + ("printTime", "Print time on stderr") ("shuffle", po::value<bool>()->default_value(true), "Shuffle examples after each iteration"); @@ -236,6 +237,7 @@ int main(int argc, char * argv[]) ProgramParameters::bdName = vm["bd"].as<std::string>(); ProgramParameters::mcdName = vm["mcd"].as<std::string>(); ProgramParameters::debug = vm.count("debug") == 0 ? false : true; + ProgramParameters::printTime = vm.count("printTime") == 0 ? false : true; ProgramParameters::trainName = vm["train"].as<std::string>(); ProgramParameters::devName = vm["dev"].as<std::string>(); ProgramParameters::lang = vm["lang"].as<std::string>();