📄 ndbtick.c
字号:
/* Copyright (C) 2003 MySQL AB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#include <ndb_global.h>#include "NdbTick.h"#define NANOSEC_PER_SEC 1000000000#define MICROSEC_PER_SEC 1000000#define MILLISEC_PER_SEC 1000#define MICROSEC_PER_MILLISEC 1000#define MILLISEC_PER_NANOSEC 1000000#ifdef HAVE_CLOCK_GETTIMENDB_TICKS NdbTick_CurrentMillisecond(void){ struct timespec tick_time; clock_gettime(CLOCK_REALTIME, &tick_time); return ((NDB_TICKS)tick_time.tv_sec) * ((NDB_TICKS)MILLISEC_PER_SEC) + ((NDB_TICKS)tick_time.tv_nsec) / ((NDB_TICKS)MILLISEC_PER_NANOSEC);}int NdbTick_CurrentMicrosecond(NDB_TICKS * secs, Uint32 * micros){ struct timespec t; int res = clock_gettime(CLOCK_REALTIME, &t); * secs = t.tv_sec; * micros = t.tv_nsec / 1000; return res;}#elseNDB_TICKS NdbTick_CurrentMillisecond(void){ struct timeval tick_time; gettimeofday(&tick_time, 0); return ((NDB_TICKS)tick_time.tv_sec) * ((NDB_TICKS)MILLISEC_PER_SEC) + ((NDB_TICKS)tick_time.tv_usec) / ((NDB_TICKS)MICROSEC_PER_MILLISEC);}int NdbTick_CurrentMicrosecond(NDB_TICKS * secs, Uint32 * micros){ struct timeval tick_time; int res = gettimeofday(&tick_time, 0); if(secs==0) { NDB_TICKS secs = tick_time.tv_sec; *micros = tick_time.tv_usec; *micros = secs*1000000+*micros; } else { * secs = tick_time.tv_sec; * micros = tick_time.tv_usec; } return res;}#endif#ifdef TIME_MEASUREMENTintNdbTick_getMicroTimer(struct MicroSecondTimer* input_timer){ NDB_TICKS secs; Uint32 mics; int ret_value; ret_value = NdbTick_CurrentMicrosecond(&secs, &mics); input_timer->seconds = secs; input_timer->micro_seconds = (NDB_TICKS)mics; return ret_value;}NDB_TICKSNdbTick_getMicrosPassed(struct MicroSecondTimer start, struct MicroSecondTimer stop){ NDB_TICKS ret_value = (NDB_TICKS)0; if (start.seconds < stop.seconds) { NDB_TICKS sec_passed = stop.seconds - start.seconds; ret_value = ((NDB_TICKS)MICROSEC_PER_SEC) * sec_passed; } else if (start.seconds > stop.seconds) { return ret_value; } if (start.micro_seconds < stop.micro_seconds) { ret_value += (stop.micro_seconds - start.micro_seconds); } else if (ret_value != (NDB_TICKS)0) { ret_value -= (start.micro_seconds - stop.micro_seconds); } return ret_value;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -