+++ /dev/null
-#include "muscle.h"\r
-\r
-#if WIN32\r
-#include <windows.h>\r
-#include <crtdbg.h>\r
-#include <psapi.h>\r
-#include <float.h>\r
-#include <stdio.h>\r
-\r
-void DebugPrintf(const char *szFormat, ...)\r
- {\r
- va_list ArgList;\r
- char szStr[4096];\r
-\r
- va_start(ArgList, szFormat);\r
- vsprintf(szStr, szFormat, ArgList);\r
-\r
- OutputDebugString(szStr);\r
- }\r
-\r
-double GetNAN()\r
- {\r
- static unsigned long nan[2]={0xffffffff, 0x7fffffff};\r
- double dNAN = *( double* )nan;\r
- assert(_isnan(dNAN));\r
- return dNAN;\r
- }\r
-\r
-double g_dNAN = GetNAN();\r
-\r
-void chkmem(const char szMsg[])\r
- {\r
- if (!_CrtCheckMemory())\r
- Quit("chkmem(%s)", szMsg);\r
- }\r
-\r
-void Break()\r
- {\r
- if (IsDebuggerPresent())\r
- DebugBreak();\r
- }\r
-\r
-const char *GetCmdLine()\r
- {\r
- return GetCommandLine();\r
- }\r
-\r
-static unsigned uPeakMemUseBytes;\r
-\r
-double GetRAMSizeMB()\r
- {\r
- MEMORYSTATUS MS;\r
- GlobalMemoryStatus(&MS);\r
- return MS.dwAvailPhys/1e6;\r
- }\r
-\r
-double GetMemUseMB()\r
- {\r
- HANDLE hProc = GetCurrentProcess();\r
- PROCESS_MEMORY_COUNTERS PMC;\r
- BOOL bOk = GetProcessMemoryInfo(hProc, &PMC, sizeof(PMC));\r
- assert(bOk);\r
- //printf("GetMemUseMB()\n");\r
- //printf("%12u PageFaultCount\n", (unsigned) PMC.PageFaultCount);\r
- //printf("%12u PagefileUsage\n", (unsigned) PMC.PagefileUsage);\r
- //printf("%12u PeakPagefileUsage\n", (unsigned) PMC.PeakPagefileUsage);\r
- //printf("%12u WorkingSetSize\n", (unsigned) PMC.WorkingSetSize);\r
- //printf("%12u PeakWorkingSetSize\n", (unsigned) PMC.PeakWorkingSetSize);\r
- //printf("%12u QuotaPagedPoolUsage\n", (unsigned) PMC.QuotaPagedPoolUsage);\r
- //printf("%12u QuotaPeakPagedPoolUsage\n", (unsigned) PMC.QuotaPeakPagedPoolUsage);\r
- //printf("%12u QuotaNonPagedPoolUsage\n", (unsigned) PMC.QuotaNonPagedPoolUsage);\r
- //printf("%12u QuotaPeakNonPagedPoolUsage\n", (unsigned) PMC.QuotaPeakNonPagedPoolUsage);\r
- unsigned uBytes = (unsigned) PMC.WorkingSetSize;\r
- if (uBytes > uPeakMemUseBytes)\r
- uPeakMemUseBytes = uBytes;\r
- return (uBytes + 500000.0)/1000000.0;\r
- }\r
-\r
-double GetPeakMemUseMB()\r
- {\r
- return (uPeakMemUseBytes + 500000.0)/1000000.0;\r
- }\r
-\r
-void CheckMemUse()\r
- {\r
-// Side-effect: sets peak usage in uPeakMemUseBytes\r
- GetMemUseMB();\r
- }\r
-\r
-double GetCPUGHz()\r
- {\r
- double dGHz = 2.5;\r
- const char *e = getenv("CPUGHZ");\r
- if (0 != e)\r
- dGHz = atof(e);\r
- if (dGHz < 0.1 || dGHz > 1000.0)\r
- Quit("Invalid value '%s' for environment variable CPUGHZ", e);\r
- return dGHz;\r
- }\r
-#endif // WIN32\r