cpu時鐘預(yù)取實例代碼分享
測試下預(yù)取的效果,利用CPU始終查看效果。根據(jù)實驗發(fā)現(xiàn),預(yù)取地址在地址使用之前的十行左右代碼處效果比較好!
#include <stdio.h>
#define MAX_LEN 1000000
static inline void prefetchnta(void *addr) //預(yù)取部分
{
__asm__("movl %0, %%eax"::"a"(addr));
__asm__(".byte 0x0f, 0x18, 0x00");
}
inline unsigned long long GetCPUTickCount()
{
unsigned long high32 = 0;
unsigned long low32 = 0;
__asm__("RDTSC" : "=a"(low32), "=d"(high32));
unsigned long long counter = high32;
counter = (counter<<32) + low32;
return counter;
}
int main(int argc, char* argv[])
{
long long start, end;
long long array[MAX_LEN];
int i;
for(i = 0; i < MAX_LEN; i++) //讓cache失效
array[i]++;
start = GetCPUTickCount();
array[0]++;
end = GetCPUTickCount();
printf("don't use prefetch time:%ld\n", end - start);
for(i = 0; i < MAX_LEN; i++)
array[i]++;
prefetchnta(array);
start = GetCPUTickCount();
array[0]++;
end = GetCPUTickCount();
printf("use prefetch time:%ld\n", end - start);
return 0;
}
相關(guān)文章
linux bash中too many arguments問題的解決方法
本文介紹下在linux bash shell中出現(xiàn)too many arguments問題的解決辦法,有需要的朋友參考學(xué)習(xí)下2013-11-11
Shell腳本監(jiān)控服務(wù)器在線狀態(tài)和郵件報警的方法
這篇文章主要介紹了Shell腳本監(jiān)控服務(wù)器在線狀態(tài)和郵件報警的方法,使用的是ping命令來監(jiān)控,需要的朋友可以參考下2014-03-03
Linux文本查看命令及其選項詳解(cat,head,tail)
這篇文章主要介紹了Linux文本查看命令及其選項詳解(cat,head,tail),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
Linux命令創(chuàng)建日期文件夾或者文件的實例代碼
本文通過實例代碼給大家介紹了Linux命令創(chuàng)建日期文件夾或者文件的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10
Shell腳本實現(xiàn)服務(wù)器多臺免密登錄操作
本文介紹了auto_ssh_batch.sh腳本,用于在多臺RHEL/CentOS7主機之間快速配置SSH免密登錄,并支持遠程傳輸腳本/文件及執(zhí)行命令,腳本通過pass文件提供統(tǒng)一認證憑據(jù),nodes文件定義目標主機列表,實現(xiàn)批量自動化操作,感興趣的朋友一起看看吧2025-03-03
Shell腳本實現(xiàn)獲取網(wǎng)頁快照并生成縮略圖
這篇文章主要介紹了Shell腳本實現(xiàn)獲取網(wǎng)頁快照并生成縮略圖,本文獲取網(wǎng)頁快照使用phantomjs、生成縮略圖使用ImageMagick,需要的朋友可以參考下2015-02-02

