00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <iomanip>
00013 #include <sstream>
00014
00015 #include "Rtypes.h"
00016
00017 #include "TMemStatHelpers.h"
00018
00019 using namespace std;
00020
00021
00022 string memstat::dig2bytes(Long64_t bytes)
00023 {
00024
00025
00026
00027
00028 ostringstream ss;
00029 ss << fixed;
00030
00031 if(bytes < 0) {
00032 ss << '-';
00033 bytes = -bytes;
00034 }
00035
00036 static const long kB = 1024L;
00037 static const long lMB = kB * kB;
00038 static const long lGB = lMB * kB;
00039
00040 if(bytes < kB)
00041 ss << bytes << " B";
00042 else if(bytes < (10L * kB))
00043 ss << setprecision(2) << ((double)bytes / (float)kB) << " kB";
00044 else if(bytes < (100L * kB))
00045 ss << setprecision(1) << ((double)bytes / (float)kB) << " kB";
00046 else if(bytes < lMB)
00047 ss << setprecision(0) << ((double)bytes / (float)kB) << " kB";
00048 else if(bytes < (10L * lMB))
00049 ss << setprecision(2) << ((double)bytes / (float)lMB) << " MB";
00050 else if(bytes < (100L * lMB))
00051 ss << setprecision(1) << ((double)bytes / (float)lMB) << " MB";
00052 else if(bytes < lGB)
00053 ss << setprecision(0) << ((double)bytes / (float)lMB) << " MB";
00054 else
00055 ss << setprecision(2) << ((double)bytes / (float)lGB) << " GB";
00056
00057 return ss.str();
00058 }