導航:首頁 > 操作系統 > linuxgettickcount

linuxgettickcount

發布時間:2022-09-24 15:39:35

linux下C語言獲得系統時間的方法

沒有完整程序, 不過能提供一點資料

int gettimeofday(struct timeval * tv,struct timezone *tz);
這個函數可以獲取當前時間, 貌似只要第一個結構體就行了

struct timeval
{
time_t tv_sec; //秒 [long int]
suseconds_t tv_usec; //微秒 [long int], (10E-6 second)
};
struct timeval
{
long tv_sec;
long tv_usec;
};

然後取微秒的前三位就是小數了, 之後把秒 tv_sec 轉化為 tm 格式, 參數用秒的指針就行

struct tm * gmtime(const time_t * t);
//轉換成格林威治時間。有時稱為GMT或UTC。
struct tm * localtime(const time_t *t);
//轉換成本地時間。它可以透過修改TZ環境變數來在一台機器中,不同使用者表示不同時間.

下面是tm的部分參數

int tm_sec; //tm_sec表「秒」數,在[0,61]之間,多出來的兩秒是用來處理跳秒問題用的。/* Seconds: 0-59 (K&R says 0-61?) */
int tm_min; //tm_min表「分」數,在[0,59]之間。
int tm_hour; //tm_hour表「時」數,在[0,23]之間。
int tm_mday; //tm_mday表「本月第幾日」,在[1,31]之間。
int tm_mon; //tm_mon表「本年第幾月」,在[0,11]之間。
int tm_year; //tm_year要加1900表示那一年。 /* /* 年份,其值從1900開始 */*/
int tm_wday; //tm_wday表「本周第幾日」,在[0,6]之間。 /* Days since Sunday (0-6) */ /*其中0代表星期天,1代表星期一,以此類推 */
int tm_yday; //tm_yday表「本年第幾日」,在[0,365]之間,閏年有366日。 /*其中0代表1月1日,1代表1月2日,以此類推 */*/
int tm_isdst; //tm_isdst表是否為「日光節約時間」

------------------------------華麗麗的分割線--------------------------------------------------
由於很長時間沒編程了, 也沒有Linux環境, 我就簡單寫幾行代碼, 僅作參考

#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include<unistd.h>
//這四個不一定夠用了

struct timeval tv;
struct timezone tz;
struct tm * p_tm;
//變數沒有初始化習慣不好,不要學

gettimeofday(&tv, &tz);
p_tm = gmtime( (const time_t *)&tv.tv_sec );

字元串的組裝尤其格式問題自己解決吧
年 p_tm->tm_year+ 1900
月 p_tm->tm_mon+ 1
日 p_tm->tm_mday
時 p_tm->tm_hour+ 1
分 p_tm->tm_min+ 1
秒 p_tm->tm_sec+ 1
小數點後面的部分,注意不夠三位還是前面填充0 tv.tv_sec/1000

Ⅱ 如何精確計算程序運行時間比clock()函數更精確的

如果你要更精確的,就需要使用系統API來獲取了。
windows sdk下面有幾個獲取CPU時鍾的函數,我記得一個gettickcount(),返回開機到調用時的毫秒數(像360之類的軟體的計算系統啟動時間就是調用這個api)可以用來計算運行時間。實際上還有更精確的,我沒有用過(因為毫秒對我就夠用了),所以不記得名字,我搜了一下,給你附了個鏈接。
記得#include <windows.h>
再想到一點,如果你是用linux的話,我就不太熟了……
參考資料: http://www.cppblog.com/gcs8cn/archive/2010/06/09/117469.html

Ⅲ 怎麼用c++獲得linux的硬體信息

API之硬體與系統函數ActivateKeyboardLayout激活一個新的鍵盤布局。鍵盤布局定義了按鍵在一種物理性鍵盤上的位置與含義Beep用於生成簡單的聲音CharToOem將一個字串從ANSI字元集轉換到OEM字元集ClipCursor將指針限制到指定區域ConvertDefaultLocale將一個特殊的地方標識符轉換成真實的地方IDCreateCaret根據指定的信息創建一個插入符(游標),並將它選定為指定窗口的默認插入符DestroyCaret清除(破壞)一個插入符EnumCalendarInfo枚舉在指定「地方」環境中可用的日歷信息EnumDateFormats列舉指定的「當地」設置中可用的長、短日期格式EnumSystemCodePages枚舉系統中已安裝或支持的代碼頁EnumSystemLocales枚舉系統已經安裝或提供支持的「地方」設置EnumTimeFormats枚舉一個指定的地方適用的時間格式ExitWindowsEx退出windows,並用特定的選項重新啟動ExpandEnvironmentStrings擴充環境字串FreeEnvironmentStrings翻譯指定的環境字串塊GetACP判斷目前正在生效的ANSI代碼頁GetAsyncKeyState判斷函數調用時指定虛擬鍵的狀態GetCaretBlinkTime判斷插入符游標的閃爍頻率GetCaretPos判斷插入符的當前位置GetClipCursor取得一個矩形,用於描述目前為滑鼠指針規定的剪切區域GetCommandLine獲得指向當前命令行緩沖區的一個指針GetComputerName取得這台計算機的名稱GetCPInfo取得與指定代碼頁有關的信息GetCurrencyFormat針對指定的「地方」設置,根據貨幣格式格式化一個數字GetCursor獲取目前選擇的滑鼠指針的句柄GetCursorPos獲取滑鼠指針的當前位置GetDateFormat針對指定的「當地」格式,對一個系統日期進行格式化GetDoubleClickTime判斷連續兩次滑鼠單擊之間會被處理成雙擊事件的間隔時間GetEnvironmentStrings為包含了當前環境字串設置的一個內存塊分配和返回一個句柄GetEnvironmentVariable取得一個環境變數的值GetInputState判斷是否存在任何待決(等待處理)的滑鼠或鍵盤事件GetKBCodePage由GetOEMCP取代,兩者功能完全相同GetKeyboardLayout取得一個句柄,描述指定應用程序的鍵盤布局GetKeyboardLayoutList獲得系統適用的所有鍵盤布局的一個列表GetKeyboardLayoutName取得當前活動鍵盤布局的名稱GetKeyboardState取得鍵盤上每個虛擬鍵當前的狀態GetKeyboardType了解與正在使用的鍵盤有關的信息GetKeyNameText在給出掃描碼的前提下,判斷鍵名GetKeyState針對已處理過的按鍵,在最近一次輸入信息時,判斷指定虛擬鍵的狀態GetLastError針對之前調用的api函數,用這個函數取得擴展錯誤信息GetLocaleInfo取得與指定「地方」有關的信息GetLocalTime取得本地日期和時間GetNumberFormat針對指定的「地方」,按特定的格式格式化一個數字GetOEMCP判斷在OEM和ANSI字元集間轉換的windows代碼頁GetQueueStatus判斷應用程序消息隊列中待決(等待處理)的消息類型GetSysColor判斷指定windows顯示對象的顏色GetSystemDefaultLangID取得系統的默認語言IDGetSystemDefaultLCID取得當前的默認系統「地方」GetSystemInfo取得與底層硬體平台有關的信息GetSystemMetrics返回與windows環境有關的信息GetSystemPowerStatus獲得與當前系統電源狀態有關的信息GetSystemTime取得當前系統時間,這個時間採用的是「協同世界時間」(即UTC,也叫做GMT)格式GetSystemTimeAdjustment使內部系統時鍾與一個外部的時鍾信號源同步GetThreadLocale取得當前線程的地方IDGetTickCount用於獲取自windows啟動以來經歷的時間長度(毫秒)GetTimeFormat針對當前指定的「地方」,按特定的格式格式化一個系統時間GetTimeZoneInformation取得與系統時區設置有關的信息GetUserDefaultLangID為當前用戶取得默認語言IDGetUserDefaultLCID取得當前用戶的默認「地方」設置GetUserName取得當前用戶的名字GetVersion判斷當前運行的Windows和DOS版本GetVersionEx取得與平台和操作系統有關的版本信息HideCaret在指定的窗口隱藏插入符(游標)IsValidCodePage判斷一個代碼頁是否有效IsValidLocale判斷地方標識符是否有效keybd_event這個函數模擬了鍵盤行動LoadKeyboardLayout載入一個鍵盤布局MapVirtualKey根據指定的映射類型,執行不同的掃描碼和字元轉換MapVirtualKeyEx根據指定的映射類型,執行不同的掃描碼和字元轉換MessageBeep播放一個系統聲音。系統聲音的分配方案是在控制面板里決定的mouse_event模擬一次滑鼠事件OemKeyScan判斷OEM字元集中的一個ASCII字元的掃描碼和Shift鍵狀態OemToChar將OEM字元集的一個字串轉換到ANSI字元集SetCaretBlinkTime指定插入符(游標)的閃爍頻率SetCaretPos指定插入符的位置SetComputerName設置新的計算機名SetCursor將指定的滑鼠指針設為當前指針SetCursorPos設置指針的位置SetDoubleClickTime設置連續兩次滑鼠單擊之間能使系統認為是雙擊事件的間隔時間SetEnvironmentVariable將一個環境變數設為指定的值SetKeyboardState設置每個虛擬鍵當前在鍵盤上的狀態SetLocaleInfo改變用戶「地方」設置信息SetLocalTime設置當前地方時間SetSysColors設置指定窗口顯示對象的顏色SetSystemCursor改變任何一個標准系統指針SetSystemTime設置當前系統時間SetSystemTimeAdjustment定時添加一個校準值使內部系統時鍾與一個外部的時鍾信號源同步SetThreadLocale為當前線程設置地方SetTimeZoneInformation設置系統時區信息ShowCaret在指定的窗口裡顯示插入符(游標)ShowCursor控制滑鼠指針的可視性SwapMouseButton決定是否互換滑鼠左右鍵的功能SystemParametersInfo獲取和設置數量眾多的windows系統參數將系統時間轉換成地方時間ToAscii根據當前的掃描碼和鍵盤信息,將一個虛擬鍵轉換成ASCII字元ToUnicode根據當前的掃描碼和鍵盤信息,將一個虛擬鍵轉換成Unicode字元UnloadKeyboardLayout卸載指定的鍵盤布局VkKeyScan針對Windows字元集中一個ASCII字元,判斷虛擬鍵碼和Shift鍵的狀態

Ⅳ socket編程在windows和linux下的區別

下面大概分幾個方面進行羅列:

Linux要包含

[cpp]
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
等頭文件,而windows下則是包含
[cpp]
#include <winsock.h>


Linux中socket為整形,Windows中為一個SOCKET。
Linux中關閉socket為close,Windows中為closesocket。
Linux中有變數socklen_t,Windows中直接為int。
因為linux中的socket與普通的fd一樣,所以可以在TCP的socket中,發送與接收數據時,直接使用read和write。而windows只能使用recv和send。
設置socet選項,比如設置socket為非阻塞的。Linux下為

[cpp]
flag = fcntl (fd, F_GETFL);
fcntl (fd, F_SETFL, flag | O_NONBLOCK);
,Windows下為
[cpp]
flag = 1;
ioctlsocket (fd, FIONBIO, (unsigned long *) &flag);

當非阻塞socket的TCP連接正在進行時,Linux的錯誤號為EINPROGRESS,Windows的錯誤號為WSAEWOULDBLOCK。

file
Linux下面,文件換行是"\n",而windows下面是"\r\n"。
Linux下面,目錄分隔符是"/",而windows下面是"\"。
Linux與Windows下面,均可以使用stat調用來查詢文件信息。但是,Linux只支持2G大小,而Windows只支持4G大小。為了支持更大的文件查詢,可以在Linux環境下加

_FILE_OFFSET_BITS=64定義,在Windows下面使用_stat64調用,入參為struct __stat64。
Linux中可根據stat的st_mode判斷文件類型,有S_ISREG、S_ISDIR等宏。Windows中沒有,需要自己定義相應的宏,如

[cpp]
#define S_ISREG(m) (((m) & 0170000) == (0100000))
#define S_ISDIR(m) (((m) & 0170000) == (0040000))
Linux中刪除文件是unlink,Windows中為DeleteFile。

time

Linux中,time_t結構是長整形。而windows中,time_t結構是64位的整形。如果要在windows始time_t為32位無符號整形,可以加宏定義,_USE_32BIT_TIME_T。
Linux中,sleep的單位為秒。Windows中,Sleep的單位為毫秒。即,Linux下sleep (1),在Windows環境下則需要Sleep (1000)。
Windows中的timecmp宏,不支持大於等於或者小於等於。
Windows中沒有struct timeval結構的加減宏可以使用,需要手動定義:

[cpp]
#define MICROSECONDS (1000 * 1000)

#define timeradd(t1, t2, t3) do { \
(t3)->tv_sec = (t1)->tv_sec + (t2)->tv_sec; \
(t3)->tv_usec = (t1)->tv_usec + (t2)->tv_usec % MICROSECONDS; \
if ((t1)->tv_usec + (t2)->tv_usec > MICROSECONDS) (t3)->tv_sec ++; \
} while (0)

#define timersub(t1, t2, t3) do { \
(t3)->tv_sec = (t1)->tv_sec - (t2)->tv_sec; \
(t3)->tv_usec = (t1)->tv_usec - (t2)->tv_usec; \
if ((t1)->tv_usec - (t2)->tv_usec < 0) (t3)->tv_usec --, (t3)->tv_usec += MICROSECONDS; \
} while (0)

調用進程

Linux下可以直接使用system來調用外部程序。Windows最好使用WinExec,因為WinExec可以支持是打開還是隱藏程序窗口。用WinExec的第二個入參指明,如

SW_SHOW/SW_HIDE。

雜項

Linux為srandom和random函數,Windows為srand和rand函數。
Linux為snprintf,Windows為_snprintf。
同理,Linux中的strcasecmp,Windows為_stricmp。

錯誤處理

Linux下面,通常使用全局變數errno來表示函數執行的錯誤號。Windows下要使用GetLastError ()調用來取得。

Linux環境下僅有的
這些函數或者宏,Windows中完全沒有,需要用戶手動實現。
atoll

[cpp]
long long
atoll (const char *p)
{
int minus = 0;
long long value = 0;
if (*p == '-')
{
minus ++;
p ++;
}
while (*p >= '0' && *p <= '9')
{
value *= 10;
value += *p - '0';
p ++;
}
return minus ? 0 - value : value;
}
gettimeofday

[cpp]
#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS)
#define EPOCHFILETIME 11644473600000000Ui64
#else
#define EPOCHFILETIME 11644473600000000ULL
#endif

struct timezone
{
int tz_minuteswest;
int tz_dsttime;
};

int
gettimeofday (struct timeval *tv, struct timezone *tz)
{
FILETIME ft;
LARGE_INTEGER li;
__int64 t;
static int tzflag;

if (tv)
{
GetSystemTimeAsFileTime (&ft);
li.LowPart = ft.dwLowDateTime;
li.HighPart = ft.dwHighDateTime;
t = li.QuadPart; /* In 100-nanosecond intervals */
t -= EPOCHFILETIME; /* Offset to the Epoch time */
t /= 10; /* In microseconds */
tv->tv_sec = (long) (t / 1000000);
tv->tv_usec = (long) (t % 1000000);
}

if (tz)
{
if (!tzflag)
{
_tzset ();
tzflag++;
}
tz->tz_minuteswest = _timezone / 60;
tz->tz_dsttime = _daylight;
}

return 0;
}

編譯相關
當前函數,Linux用__FUNCTION__表示,Windows用__func__表示。
--------------------------------------------------------------------------------
Socket 編程 windows到Linux代碼移植遇到的問題
1)頭文件
windows下winsock.h/winsock2.h
linux下sys/socket.h
錯誤處理:errno.h

2)初始化
windows下需要用WSAStartup
linux下不需要

3)關閉socket
windows下closesocket(...)
linux下close(...)

4)類型
windows下SOCKET
linux下int
如我用到的一些宏:
#ifdef WIN32
typedef int socklen_t;
typedef int ssize_t;
#endif

#ifdef __LINUX__
typedef int SOCKET;
typedef unsigned char BYTE;
typedef unsigned long DWORD;
#define FALSE 0
#define SOCKET_ERROR (-1)
#endif

5)獲取錯誤碼
windows下getlasterror()/WSAGetLastError()
linux下errno變數

6)設置非阻塞
windows下ioctlsocket()
linux下fcntl() <fcntl.h>

7)send函數最後一個參數
windows下一般設置為0
linux下最好設置為MSG_NOSIGNAL,如果不設置,在發送出錯後有可 能會導致程序退出。

8)毫秒級時間獲取
windows下GetTickCount()
linux下gettimeofday()

3、多線程
多線程: (win)process.h --〉(linux)pthread.h
_beginthread --> pthread_create
_endthread --> pthread_exit
-----------------------------------------------------------------
windows與linux平台使用的socket均繼承自Berkeley socket(rfc3493),他們都支持select I/O模型,均支持使用getaddrinfo與getnameinfo實現協議無關編程。但存在細微差別,

主要有:

頭文件及類庫。windows使用winsock2.h(需要在windows.h前包含),並要鏈接庫ws2_32.lib;linux使用netinet/in.h, netdb.h等。
windows下在使用socket之前與之後要分別使用WSAStartup與WSAClean。
關閉socket,windows使用closesocket,linux使用close。
send*與recv*函數參數之socket長度的類型,windows為int,linux為socklen_t,可預編譯指令中處理這一差異,當平台為windows時#define socklen_t unsigned int。
select函數第一個參數,windows忽略該參數,linux下該參數表示集合中socket的上限值,一般設為sockfd(需select的socket) + 1。
windows下socket函數返回值類型為SOCKET(unsigned int),其中發生錯誤時返回INVALID_SOCKET(0),linux下socket函數返回值類型int, 發生錯誤時返回-1。
另外,如果綁定本機回環地址,windows下sendto函數可以通過,linux下sendto回報錯:errno=22, Invalid arguement。一般情況下均綁定通配地址。
轉載jlins

Ⅳ unix下獲取精確到毫秒的系統的時間

C語言如何獲得精確到毫秒的時間

在做測試或性能優化時,經常要知道程序運行的時間,在Linux系統可以使用time命令來計算程序運行運行所消耗的時間,能精確到毫秒,如果要精確到代碼塊或某個操作運行時所消耗的時間,time命令就不給力了。如果對時間的精度要求不高的話,可以調用標准C的介面time來得到開始和結束的時間,再調用difftime介面來計算時間差,精度是秒,代碼如下所示:

time.c
如果要讓程序休眠3秒,Windows使用Sleep(3000),Linux使用sleep(3),即Windows的Sleep介面的參數的單位是毫秒,Linux的sleep介面的參數的單位是秒。 如果需要精確到毫秒,以上程序就發揮不了作用,如果在java要達到這要求就很簡單了,代碼如下所示:

Time.java
通過Google找了一些資料後,發現C語言里沒有標準的介面可以獲得精確到毫秒的時間,都會調用到與操作系統相關的API,下面會分別介紹在Linux和Windows系統下的多種實現方法,希望對大家有幫助。
使用gettimeofday介面:

gettimeofday.c
gettimeofday能得到微秒數,比毫秒還要更精確。
使用ftime介面:

ftime.c
使用GetTickCount介面:
下載:
GetTickCount.c
Windows系統下有些編譯器使用printf輸出64位整數參數要使用%I64d,比如VC。
使用QueryPerformanceX介面:

QueryPerformance.c
使用GetSystemTime介面:

GetSystemTime.c
這種方法沒給出計算時間差的實現,只給出如何用GetSystemTime調用得到當前時間,計算時間差比較簡單,根據年、月、日、時、分秒和毫秒計算出一個整數,再將兩整數相減即可。
以上是通過Google找到一些用C語言獲得精確到毫秒的實現方法,對比Linux和Windows的方法,發現兩個系統的API命名很不一樣,Linux介面名要麼都是小寫要麼使用下劃線(_)來分隔單詞,而Windows介面名中的單詞首字母大寫。

Ⅵ socket編程在windows和linux下的區別是什麼

1.
頭文件
windows下winsock.h或winsock2.h
linux下netinet/in.h(大部分都在這兒),unistd.h(close函數在這兒),sys/socket.h(在in.h里已經包含了,可以省了)
2.
初始化
windows下需要用WSAStartup啟動Ws2_32.lib,並且要用#pragma
comment(lib,"Ws2_32")來告知編譯器鏈接該lib。
linux下不需要
3.
關閉socket
windows下closesocket(...)
linux下close(...)
4.
類型
windows下SOCKET
linux下int
5.
獲取錯誤碼
windows下getlasterror()/WSAGetLastError()
linux下,未能成功執行的socket操作會返回-1;如果包含了errno.h,就會設置errno變數
6.
設置非阻塞
windows下ioctlsocket()
linux下fcntl(),需要頭文件fcntl.h
7.
send函數最後一個參數
windows下一般設置為0
linux下最好設置為MSG_NOSIGNAL,如果不設置,在發送出錯後有可能會導致程序退出
8.
毫秒級時間獲取
windows下GetTickCount()
linux下gettimeofday()

Ⅶ c語言如何計時

  1. C語言中提供了許多庫函數來實現計時功能

  2. 下面介紹一些常用的計時函數

    1. time()

    頭文件:time.h

    函數原型:time_t time(time_t * timer)

    功能:返回以格林尼治時間(GMT)為標准,從1970年1月1日00:00:00到現在的時此刻所經過的秒數

    用time()函數結合其他函數(如:localtime、gmtime、asctime、ctime)可以獲得當前系統時間或是標准時間。

    用difftime函數可以計算兩個time_t類型的時間的差值,可以用於計時。用difftime(t2,t1)要比t2-t1更准確,因為C標准中並沒有規定time_t的單位一定是秒,而difftime會根據機器進行轉換,更可靠。

    說明:C標准庫中的函數,可移植性最好,性能也很穩定,但精度太低,只能精確到秒,對於一般的事件計時還算夠用,而對運算時間的計時就明顯不夠用了。

    2. clock()

    頭文件:time.h

    函數原型:clock_t clock(void);

    功能:該函數返回值是硬體滴答數,要換算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,這兩個量的值都是1000。

    說明:可以精確到毫秒,適合一般場合的使用。

    3. timeGetTime()

    頭文件:Mmsystem.h引用庫: Winmm.lib

    函數原型:DWORD timeGetTime(VOID);

    功能:返回系統時間,以毫秒為單位。系統時間是從系統啟動到調用函數時所經過的毫秒數。注意,這個值是32位的,會在0到2^32之間循環,約49.71天。

    說明:該函數的時間精度是五毫秒或更大一些,這取決於機器的性能。可用timeBeginPeriod和timeEndPeriod函數提高timeGetTime函數的精度。如果使用了,連續調用timeGetTime函數,一系列返回值的差異由timeBeginPeriod和timeEndPeriod決定。

    4. GetTickCount()

    頭文件:windows.h

    函數原型:DWORD WINAPI GetTickCount(void);

    功能:返回自設備啟動後的毫秒數(不含系統暫停時間)。

    說明:精確到毫秒。對於一般的實時控制,使用GetTickCount()函數就可以滿足精度要求。

    5. QueryPerformanceCounter()、QueryPerformanceFrequency()

    頭文件:windows.h

    函數原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);

    BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

    功能:前者獲得的是CPU從開機以來執行的時鍾周期數。後者用於獲得你的機器一秒鍾執行多少次,就是你的時鍾周期。

    補充:LARGE_INTEGER既可以是一個8位元組長的整型數,也可以是兩個4位元組長的整型數的聯合結構, 其具體用法根據編譯器是否支持64位而定:

    在進行定時之前,先調用QueryPerformanceFrequency()函數獲得機器內部定時器的時鍾頻率,然後在需要嚴格定時的事件發生之前和發生之後分別調用QueryPerformanceCounter()函數,利用兩次獲得的計數之差及時鍾頻率,計算出事件經歷的精確時間。

    說明:這種方法的定時誤差不超過1微秒,精度與CPU等機器配置有關,一般認為精度為透微秒級。在Windows平台下進行高精度計時的時候可以考慮這種方法。

    6. gettimeofday()

    Linux C函數。

    頭文件:sys/time.h

    函數原型:int gettimeofday(struct timeval *tv,struct timezone *tz);

    說明:其參數tv是保存獲取時間結果的結構體,參數tz用於保存時區結果(若不使用則傳入NULL即可)。

    timeval的定義為:

    structtimeval{

    longtv_sec;//秒數

    longtv_usec;//微秒數

    }

    可見該函數可用於在linux中獲得微秒精度的時間。

    說明:使用這種方式計時,精度可達微秒。經驗證,在arm+linux的環境下此函數仍可使用。

Ⅷ 從沒遇見,getTickCount只能得到64HZ的時間間隔,求教

補充: 不是和你說了么 你這段程序測的是兩次循環中間的間隔
你要是再換個更好點的機器 性能會更好(也就是說 VB程序的運行速度 和機器處理速度有關
這么說你懂了吧)

我電腦上的虛擬機上只有C++ 沒實驗過
按你的說法 大概虛擬機也模擬出機器的處理速度了吧(我這是Linux的 不知會不會比XP快些)
================

While i < 100
If t1 <> GetTickCount Then
Text1 = Text1 & GetTickCount & ","
t1 = GetTickCount
i = i + 1
End If

這是個循環啊
兩次循環中間的間隔是 15毫秒啊

加些語句
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Sub Command1_Click()
Dim i As Integer
Dim t1 As Long
Text1 = ""
While i < 10
If t1 <> GetTickCount Then
Text1 = Text1 & GetTickCount & ","
t1 = GetTickCount
i = i + 1
For j = 1 To 1000000
j = j + 1
Next
End If
' DoEvents
Wend
End Sub

結果是這個: (所花時間增多了)
2676765,2676812,2676859,2676890,2676937,2676984,2677031,2677078,2677125,2677171,

Ⅸ socket在windows下和linux下的區別的網路文摘

1)頭文件 windows下winsock.h/winsock2.h
linux下sys/socket.h 錯誤處理:errno.h

2)初始化
windows下需要用WSAStartup
WSADATA wsaData;
err = WSAStartup(0x202,&wsaData);
if ( err != 0 )
{
return 0;
}
else if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ) //檢測是否支持這個版本的socket
{
WSACleanup( );
return 0;
}
對應的退出清理用WSACleanup( );
linux下不需要

3)關閉socket
windows下closesocket(...)
linux下close(...)

4)socket類型
windows下SOCKET
linux下int

5)獲取錯誤碼
windows下WSAGetLastError()
linux下errno變數
extern int errno;
int geterror(){return errno;}

6)設置非阻塞
windows下ioctlsocket(server_socket,FIONBIO,&ul); int ul = 1
linux下fcntl(server_socket,F_SETFL, O_NONBLOCK); <fcntl.h>

7)send函數最後一個參數
windows下一般設置為0
linux下必須是後幾個參數用到的socket中,值最大的數(整型)加1 (另一種說法是設置為MSG_NOSIGNAL)

8)毫秒級時間獲取
windows下GetTickCount()
linux下gettimeofday()

Ⅹ gettickcount linux用什麼替代

ime()、gettimeofday()及GetTickCount()效率比較 time()和gettimeofday()是linux的系統調用,GetTickCount()是windows的函數。
time:返回至1970-1-1 00:00:00至今的秒數; gettimeofday:除了返回秒數外,還有納秒數,用於更精確的計時; GetTickCount:返回系統啟動至今的毫秒數
使用三個函數,分別調用1千萬次,測試結果如下: time:約967毫秒; gettimeofday:約1800毫秒; GetTickCount:約70毫秒;
可見,GetTickCount要快很多很多,在linux系統下,頻繁使用time及gettimeofday嚴重影響效率。

閱讀全文

與linuxgettickcount相關的資料

熱點內容
免費爽文有聲小說 瀏覽:681
穿越古代巨肉的yy小說 瀏覽:79
貓眼電影實時票房 瀏覽:576
六七十年代科研強國文 瀏覽:408
霸道王子絕對命令全集 瀏覽:309
能在線看的網站 瀏覽:207
自動編譯設置java前端 瀏覽:903
找一本主角叫蘇晨的小說 瀏覽:847
壓縮包多長時間能解壓 瀏覽:370
小說男主叫江宴女主叫溫暖 瀏覽:455
有一部小說主角叫唐糖 瀏覽:302
找一部小說主角叫陸宇 瀏覽:402
受重生悔過的小說 瀏覽:959
單片機顯示模塊電路 瀏覽:305
交換老婆系列小說 瀏覽:280
支持投屏的在線影院 瀏覽:844
男主是鴨子公關 瀏覽:61
yy680 瀏覽:787
二戰德國納粹電影 瀏覽:504
雲存儲搭建伺服器 瀏覽:851