X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkMemoryUsage.cxx;h=9cc75d0acce73059b2aba6a083059624e9af66d4;hb=d55f025b18f68066a52b8f33c2dc6481e82c2580;hp=7e0079e80b987ee5acc2ba33eaea3df10dbafa25;hpb=8365018304075da6b6ef5ab04ffc47660c77d05f;p=clitk.git diff --git a/common/clitkMemoryUsage.cxx b/common/clitkMemoryUsage.cxx index 7e0079e..9cc75d0 100644 --- a/common/clitkMemoryUsage.cxx +++ b/common/clitkMemoryUsage.cxx @@ -1,9 +1,9 @@ /*========================================================================= Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Authors belong to: + Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -14,16 +14,16 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html - ======================================================================-====*/ + ===========================================================================**/ // clitk include #include "clitkCommon.h" #include "clitkMemoryUsage.h" +#ifndef _WIN32 +# include +#endif -// itk include -#include "itkMemoryUsageObserver.h" - -void clitk::PrintMemory(bool verbose, std::string s) +void clitk::PrintMemory(bool verbose, std::string s) { #if CLITK_MEMORY_INFO == 1 if (verbose) { @@ -32,13 +32,36 @@ void clitk::PrintMemory(bool verbose, std::string s) if (s != "") std::cout << "==> " << s << ": "; std::cout << mem << "MB (" << mem-previous << "MB)" << std::endl; previous = mem; + //DD(stat[i].proc_resident/1000/1000); + //DD(stat[i].pid); } #endif -} + } -double clitk::GetMemoryUsageInMb() +double clitk::GetMemoryUsageInMb() { - itk::MemoryUsageObserver memUsage; - return memUsage.GetMemoryUsage() / 1024.; -} +#if CLITK_MEMORY_INFO == 1 + //sleep(1); // wait to refresh memory ? need to let the system refresh the mem + size_t entries; + sg_process_stats *stat; + int i=0; + sg_init(1); + + stat = sg_get_process_stats(&entries); + if(stat == NULL) + return 0.0; + // Search the current pid in the list of processes + while (stat->pid != getpid() && i < entries) + { + ++i; + ++stat; + } + + // Display total memory size + double mem = stat->proc_resident/1000/1000; // in MB + return mem; +#else + return 0.0; +#endif + }