中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

全國建筑業(yè)四庫一平臺seo專業(yè)學(xué)校

全國建筑業(yè)四庫一平臺,seo專業(yè)學(xué)校,基于web的在線電影網(wǎng)站設(shè)計(jì),求職網(wǎng)站建設(shè)cacheline是內(nèi)存調(diào)度的基本結(jié)構(gòu),其大小一般為32B或者64B。關(guān)于本機(jī)具體的配置信息可以在配置文件中看到: 這里可以看到我的這臺機(jī)器的cacheline大小是64B。對于cacheline在多核處理器中有一個偽共享的狀態(tài),具體可以參考以下博客:高…

cacheline是內(nèi)存調(diào)度的基本結(jié)構(gòu),其大小一般為32B或者64B。關(guān)于本機(jī)具體的配置信息可以在配置文件中看到:

這里可以看到我的這臺機(jī)器的cacheline大小是64B。對于cacheline在多核處理器中有一個偽共享的狀態(tài),具體可以參考以下博客:高速緩存?zhèn)喂蚕?- 知乎(這個大佬寫了1K多篇文章,我感覺需要好好消化消化。)

所謂“偽共享”實(shí)際上是主存中的一個cacheline中的內(nèi)容,在同一時刻只能被多核中的一個捕獲處理。

程序如下:

#include <unistd.h>
#include <stdio.h>
#include <string>
#include <vector>
#include <string.h>
#include <thread>
#include <chrono>
#include <iostream>
#include <atomic>struct common
{volatile unsigned long a;volatile unsigned long b;
};
struct common_fulfill
{volatile unsigned long a;unsigned long az[7];volatile unsigned long b;unsigned long bz[7];
};using namespace std;
int main(int argc, char** argv)
{cout << "no-fulfill" << endl;do{common c;c.a = 0;c.b=0;volatile bool brun = true;thread t1([&c,&brun](){while(brun)c.a+=1;});thread t2([&c,&brun](){while(brun)c.b+=1;});std::this_thread::sleep_for(std::chrono::seconds(1));brun=false;//std::atomic_thread_fence(std::memory_order_seq_cst);t1.join();t2.join();cout << "a:" << c.a << "\t b:" << c.b << endl;}while(0);cout << "fulfill" << endl;do{common_fulfill c;c.a = 0;c.b=0;volatile bool brun = true;thread t1([&c,&brun](){while(brun)c.a+=1;});thread t2([&c,&brun](){while(brun)c.b+=1;});std::this_thread::sleep_for(std::chrono::seconds(1));brun=false;//std::atomic_thread_fence(std::memory_order_seq_cst);t1.join();t2.join();cout << "a:" << c.a << "\t b:" << c.b << endl;}while(0);cout << "add-per-second" << endl;do{common_fulfill c;c.a = 0;c.b=0;volatile bool brun = true;thread t1([&c,&brun](){while(brun)c.a+=1;});std::this_thread::sleep_for(std::chrono::seconds(1));brun=false;//std::atomic_thread_fence(std::memory_order_seq_cst);t1.join();cout << "a:" << c.a << endl;}while(0);return 0;
}

注意,我在struct c中的a和b都增加了volatile關(guān)鍵字,這個關(guān)鍵字的作用在于將緩存和主存硬綁定,有點(diǎn)同步打開文件描述符的意思。這樣,可以預(yù)期到內(nèi)存會被以cacheline為單位上鎖。然后進(jìn)行編譯。

這里用的是O2進(jìn)行優(yōu)化,然后執(zhí)行,結(jié)果如下:

這個地方可以發(fā)現(xiàn),在沒有填充的情況下,1秒內(nèi)訪問的速度是3.5*10^8;而將struct c填充到128字節(jié)的訪問次數(shù)是4.9*10^8。幾乎同樣的代碼,將最后的單CPU每秒能進(jìn)行加法數(shù)量的統(tǒng)計(jì)去掉之后,結(jié)果如下:

可以看到,兩次的情況,不填充的速度總是要遠(yuǎn)遠(yuǎn)遜色于填充的情況。我們在做服務(wù)器程序深度優(yōu)化的時候,要注意這個硬件細(xì)節(jié),有時候能夠極大地加快程序的運(yùn)行速度??梢宰⒁獾?#xff0c;偽共享狀態(tài)只是影響了CPU的運(yùn)行時間,服務(wù)器的大量CPU時間會在等待鎖中消耗,所以現(xiàn)在無鎖代碼非常流行。另外為什么增加或者修改代碼的大小就會影響CPU的執(zhí)行效率呢?這個問題還是沒有得到答案。

http://www.risenshineclean.com/news/52821.html

相關(guān)文章:

  • 網(wǎng)站功能模塊設(shè)計(jì)中國新聞
  • 網(wǎng)站制作 網(wǎng)站建設(shè)百度推廣怎么優(yōu)化
  • 可信網(wǎng)站標(biāo)志上海網(wǎng)站快速排名提升
  • 商標(biāo)注冊號在哪個位置seo優(yōu)化行業(yè)
  • 濟(jì)南微網(wǎng)站建設(shè)網(wǎng)絡(luò)營銷的三種方式
  • dede免費(fèi)模板教育網(wǎng)站百度客服24小時人工電話
  • wordpress仿簡書抖音seo是什么意思
  • 分辨率大于1920的網(wǎng)站怎么做建立網(wǎng)站的主要步驟
  • 做網(wǎng)站都需要考慮哪些seo百度seo排名優(yōu)化軟件
  • 網(wǎng)站 昆明友情鏈接網(wǎng)站源碼
  • 互聯(lián)網(wǎng)系統(tǒng)安卓手機(jī)優(yōu)化大師官方下載
  • wordpress themas網(wǎng)頁關(guān)鍵詞優(yōu)化軟件
  • 成都 企業(yè) 網(wǎng)站制作去哪里找需要推廣的app
  • 賣書網(wǎng)站開發(fā)的背景湖南長沙今日疫情
  • 智慧管網(wǎng)建設(shè)方案網(wǎng)站seo分析工具
  • wordpress廣告欄沈陽seo排名外包
  • cvm可以做網(wǎng)站服務(wù)器嗎seo優(yōu)化師培訓(xùn)
  • 有哪些網(wǎng)站是可以做宣傳的朔州seo
  • 騰訊云服務(wù)器做網(wǎng)站網(wǎng)站建設(shè)總結(jié)
  • 自己做網(wǎng)站 需要哪些私人做網(wǎng)站
  • 東莞抖音推廣合作上海網(wǎng)站快速排名優(yōu)化
  • 怎么做網(wǎng)頁快360優(yōu)化大師官網(wǎng)
  • 網(wǎng)站后臺的形成有做網(wǎng)站的嗎
  • 邯鄲新聞網(wǎng)今日頭條seo快速排名軟件網(wǎng)址
  • 武漢網(wǎng)站制作服務(wù)百度官網(wǎng)認(rèn)證免費(fèi)
  • 網(wǎng)站建設(shè)學(xué)習(xí)流程seo查詢在線
  • 正規(guī)外貿(mào)網(wǎng)站建設(shè)公司百度老年搜索
  • 有域名就可以做網(wǎng)站么網(wǎng)上做廣告宣傳
  • 黃岡網(wǎng)站制作營銷宣傳方式有哪些
  • oss做靜態(tài)網(wǎng)站網(wǎng)站收錄登錄入口