Skip to content
Snippets Groups Projects
Commit acaf0b85 authored by Tom Fischer's avatar Tom Fischer
Browse files

- added class MemWatch

- modified test programm in order to test another example
parent 1a976d3c
No related branches found
No related tags found
No related merge requests found
/*
* MemWatch.cpp
*
* Created on: May 7, 2012
* Author: TF
*/
#include "MemWatch.h"
#ifndef WIN32
namespace BaseLib {
MemWatch::MemWatch ()
{
updateMemUsage ();
}
unsigned MemWatch::updateMemUsage ()
{
std::string fname ("/proc/");
std::stringstream str_pid;
str_pid << (unsigned) getpid();
fname += str_pid.str();
fname += "/statm";
unsigned pages;
std::ifstream in (fname.c_str(), std::ios::in);
if (in == NULL) {
perror( "open" );
return 1;
}
in >> pages;
_vmem_size = ((unsigned long) pages) * ((unsigned long) getpagesize());
in >> pages;
_rmem_size = ((unsigned long) pages) * ((unsigned long) getpagesize());
in >> pages;
_smem_size = ((unsigned long) pages) * ((unsigned long) getpagesize());
in >> pages;
_cmem_size = ((unsigned long) pages) * ((unsigned long) getpagesize());
in.close ();
return 0;
}
unsigned long MemWatch::getVirtMemUsage ()
{
updateMemUsage ();
return _vmem_size;
}
unsigned long MemWatch::getResMemUsage () {
updateMemUsage ();
return _rmem_size;
}
unsigned long MemWatch::getShrMemUsage () {
updateMemUsage ();
return _smem_size;
}
unsigned long MemWatch::getCodeMemUsage () {
updateMemUsage ();
return _cmem_size;
}
} // end namespace BaseLib
#endif // WIN
/*
* MemWatch.h
*
* Created on: May 7, 2012
* Author: TF
*/
#ifndef MEMWATCH_H_
#define MEMWATCH_H_
#ifndef WIN32
#include <sys/types.h>
#include <unistd.h>
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
namespace BaseLib {
class MemWatch {
public:
MemWatch ();
unsigned long getVirtMemUsage ();
unsigned long getResMemUsage ();
unsigned long getShrMemUsage ();
unsigned long getCodeMemUsage ();
private:
unsigned updateMemUsage ();
unsigned long _vmem_size;
unsigned long _rmem_size;
unsigned long _smem_size;
unsigned long _cmem_size;
};
}
#endif // not Windows
#endif /* MEMWATCH_H_ */
......@@ -4,6 +4,7 @@ INCLUDE_DIRECTORIES(
${CMAKE_SOURCE_DIR}/BaseLib/
${CMAKE_SOURCE_DIR}/BaseLib/logog/include
${CMAKE_SOURCE_DIR}/FileIO/
${CMAKE_SOURCE_DIR}/GeoLib/
${CMAKE_SOURCE_DIR}/MathLib/
${CMAKE_SOURCE_DIR}/MeshLib/
)
......
......@@ -5,15 +5,40 @@
* Author: KR
*/
// BaseLib
#include "MemWatch.h"
#include "RunTime.h"
// MeshLib
#include "Node.h"
#include "Elements/Element.h"
#include "Mesh.h"
#include "MeshIO.h"
int main(int argc, char *argv[])
{
std::string file_name("c:/Project/Data/Ammer/Ammer-Homogen100m-Final.msh");
std::string file_name("/mnt/visdata/tom/data/TestMeshes/Mesh-dx1.00-Layered20.msh");
std::cout << "sizeof(double): " << sizeof (double) << std::endl;
std::cout << "sizeof(GeoLib::Point): " << sizeof (GEOLIB::Point) << std::endl;
std::cout << "sizeof(GeoLib::PointWithID): " << sizeof (GEOLIB::PointWithID) << std::endl;
std::cout << "sizeof(Node): " << sizeof (MeshLib::Node) << std::endl;
std::cout << "sizeof(Element): " << sizeof (MeshLib::Element) << std::endl;
FileIO::MeshIO mesh_io;
#ifndef WIN32
BaseLib::MemWatch mem_watch;
unsigned long mem_without_mesh (mem_watch.getVirtMemUsage());
BaseLib::RunTime run_time;
run_time.start();
#endif
MeshLib::Mesh* mesh = mesh_io.loadMeshFromFile(file_name);
#ifndef WIN32
unsigned long mem_with_mesh (mem_watch.getVirtMemUsage());
std::cout << "mem for mesh: " << (mem_with_mesh - mem_without_mesh)/(1024*1024) << " MB" << std::endl;
run_time.stop();
std::cout << "time for reading: " << run_time.elapsed() << " s" << std::endl;
#endif
delete mesh;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment