MCPcopy Create free account
hub / github.com/BYVoid/OpenCC / GetCurrentRSSInMB

Function GetCurrentRSSInMB

plugins/jieba/deps/cppjieba/test/benchmark.cpp:54–81  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

52}
53
54double GetCurrentRSSInMB() {
55#ifdef __APPLE__
56 mach_task_basic_info info;
57 mach_msg_type_number_t count = MACH_TASK_BASIC_INFO_COUNT;
58 if (task_info(mach_task_self(), MACH_TASK_BASIC_INFO,
59 reinterpret_cast<task_info_t>(&info), &count) != KERN_SUCCESS) {
60 return -1.0;
61 }
62 return static_cast<double>(info.resident_size) / (1024.0 * 1024.0);
63#elif defined(__linux__)
64 long total_pages = 0;
65 long rss_pages = 0;
66 std::ifstream ifs("/proc/self/statm");
67 if (!(ifs >> total_pages >> rss_pages)) {
68 return -1.0;
69 }
70 const long page_size = sysconf(_SC_PAGESIZE);
71 return static_cast<double>(rss_pages) * static_cast<double>(page_size) / (1024.0 * 1024.0);
72#elif defined(_WIN32)
73 PROCESS_MEMORY_COUNTERS counters;
74 if (!GetProcessMemoryInfo(GetCurrentProcess(), &counters, sizeof(counters))) {
75 return -1.0;
76 }
77 return static_cast<double>(counters.WorkingSetSize) / (1024.0 * 1024.0);
78#else
79 return -1.0;
80#endif
81}
82
83template <typename Func>
84double MeasureMillis(Func func) {

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected