📄 pg_rusage.c
字号:
/*------------------------------------------------------------------------- * * pg_rusage.c * Resource usage measurement support routines. * * * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * $PostgreSQL: pgsql/src/backend/utils/misc/pg_rusage.c,v 1.3 2005/10/22 14:27:29 adunstan Exp $ * *------------------------------------------------------------------------- */#include "postgres.h"#include <unistd.h>#include "utils/pg_rusage.h"/* * Initialize usage snapshot. */voidpg_rusage_init(PGRUsage *ru0){ getrusage(RUSAGE_SELF, &ru0->ru); gettimeofday(&ru0->tv, NULL);}/* * Compute elapsed time since ru0 usage snapshot, and format into * a displayable string. Result is in a static string, which is * tacky, but no one ever claimed that the Postgres backend is * threadable... */const char *pg_rusage_show(const PGRUsage *ru0){ static char result[100]; PGRUsage ru1; pg_rusage_init(&ru1); if (ru1.tv.tv_usec < ru0->tv.tv_usec) { ru1.tv.tv_sec--; ru1.tv.tv_usec += 1000000; } if (ru1.ru.ru_stime.tv_usec < ru0->ru.ru_stime.tv_usec) { ru1.ru.ru_stime.tv_sec--; ru1.ru.ru_stime.tv_usec += 1000000; } if (ru1.ru.ru_utime.tv_usec < ru0->ru.ru_utime.tv_usec) { ru1.ru.ru_utime.tv_sec--; ru1.ru.ru_utime.tv_usec += 1000000; } snprintf(result, sizeof(result), "CPU %d.%02ds/%d.%02du sec elapsed %d.%02d sec", (int) (ru1.ru.ru_stime.tv_sec - ru0->ru.ru_stime.tv_sec), (int) (ru1.ru.ru_stime.tv_usec - ru0->ru.ru_stime.tv_usec) / 10000, (int) (ru1.ru.ru_utime.tv_sec - ru0->ru.ru_utime.tv_sec), (int) (ru1.ru.ru_utime.tv_usec - ru0->ru.ru_utime.tv_usec) / 10000, (int) (ru1.tv.tv_sec - ru0->tv.tv_sec), (int) (ru1.tv.tv_usec - ru0->tv.tv_usec) / 10000); return result;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -