From 2106141b0f08608c1e86f32d853b6cf9d0f70018 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Wed, 3 Dec 2014 02:36:38 +0100 Subject: [PATCH] Show elapsed time while building action list --- src/main.c | 15 +++++++++++++++ src/util.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/util.h | 13 +++++++++++++ 3 files changed, 81 insertions(+) diff --git a/src/main.c b/src/main.c index f456ec6..d304fa2 100644 --- a/src/main.c +++ b/src/main.c @@ -60,10 +60,13 @@ int main(int argc, char *argv[]) { } } else if (!strcmp(argv[1], "scan") && argc == 4) { // Scanear informacion de directorio y guardar arbol + long long tScan=Time_GetTime(); FileNode *fileNode; printf("Building FileNode..\n"); fileNode = FileNode_Build(argv[2]); FileNode_Save(fileNode, argv[3]); + tScan=Time_GetTime()-tScan; + printf("tScan: %9lldus\n",tScan); } else if (!strcmp(argv[1], "rescan") && argc == 4) { // Scanear informacion de directorio y guardar arbol FileNode *fileNode; @@ -71,7 +74,10 @@ int main(int argc, char *argv[]) { fileNode = FileNode_Load(argv[3]); if (fileNode) { printf("Rebuilding FileNode..\n"); + long long tScan=Time_GetTime(); fileNode = FileNode_Refresh(fileNode, argv[2]); + tScan=Time_GetTime()-tScan; + printf("tScan: %9lldus\n",tScan); FileNode_Save(fileNode, argv[3]); } } else if (!strcmp(argv[1], "read") && argc == 3) { @@ -126,12 +132,15 @@ FileNode *CheckDir(char *path, int recheck) { snprintf(dirNodesFile, MaxPath, "%s/"FileNode_Filename, path); if (recheck) { printf("Checking Directory.. %s\n", path); + long long tScan=Time_GetTime(); fileNode = FileNode_Load(dirNodesFile); if (fileNode) { fileNode = FileNode_Refresh(fileNode, path); } else { fileNode = FileNode_Build(path); } + tScan=Time_GetTime()-tScan; + printf("tScan: %9lldus\n",tScan); FileNode_Save(fileNode, dirNodesFile); } else { printf("Loading Directory.. %s\n", path); @@ -182,9 +191,12 @@ int Sync(char *pathLeft, char *pathRight, int recheck, int dryRun) { } // Construir acciones + long long tBuild=Time_GetTime(); printf("Building action list.. \n"); AccionFileNode *actionFileNode = NULL; actionFileNode = AccionFileNode_BuildSync(fileNodeLeft, fileNodeRight); + tBuild=Time_GetTime()-tBuild; + printf("tBuild: %9lldus\n",tBuild); if (dryRun) { // Mostrar lista de acciones @@ -220,9 +232,12 @@ int Copy(char *pathLeft, char *pathRight, int reCheck, int dryRun) { } // Construir acciones + long long tBuild=Time_GetTime(); printf("Building action list.. \n"); AccionFileNode *actionFileNode = NULL; actionFileNode = AccionFileNode_BuildCopy(fileNodeLeft, fileNodeRight); + tBuild=Time_GetTime()-tBuild; + printf("tBuild: %9lldus\n",tBuild); if (dryRun) { // Mostrar lista de acciones diff --git a/src/util.c b/src/util.c index e18bb57..502815d 100644 --- a/src/util.c +++ b/src/util.c @@ -13,3 +13,56 @@ char *String_Copy(char *str) { return (strnew); } + +///////////////////////////// +// Time_GetTime +// +// Gets the current time in usecs. +///////////////////////////// +// Time_Pause +// +// Pauses the execution for t usecs. +#if WIN32 +#include +// WIN32 +long long Time_GetTime(){ + LARGE_INTEGER freq; + LARGE_INTEGER tim; + long long int microt; + + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&tim); + microt=(tim.QuadPart*1000000)/freq.QuadPart; + return(microt); +} +void Time_Pause(int pausa){ + long long tend,t,diff; + + t=Time_GetTime(); + tend=t+pausa; + do{ + diff=tend-t; + if(diff>1000){ + Sleep(diff/1000); + }else{ + Sleep(0); + } + t=Time_GetTime(); + }while(tend>=t); +} +#else +// UNIX +long long Time_GetTime(){ + struct timeval t; + long long usecs; + gettimeofday(&t,NULL); + usecs=(t.tv_sec*1000000ll)+(t.tv_usec); + return(usecs); +} +void Time_Pause(int pausa){ + struct timeval tv; + tv.tv_sec=(long long)pausa/1000000; + tv.tv_usec=(long long)pausa%1000000; + select(0, NULL, NULL, NULL, &tv); +} +#endif // if WIN32 \ No newline at end of file diff --git a/src/util.h b/src/util.h index 594cb3a..2b6b880 100644 --- a/src/util.h +++ b/src/util.h @@ -3,4 +3,17 @@ char *String_Copy(char *str); +///////////////////////////// +// Time_GetTime +// +// Gets the current time in usecs. +long long Time_GetTime(); + + +///////////////////////////// +// Time_Pause +// +// Pauses the execution for t usecs. +void Time_Pause(int pausa); + #endif