当前位置: 首页 > news >正文

好看的seo网站wordpress社交链接设置

好看的seo网站,wordpress社交链接设置,淘宝网页设计尺寸,tomcat做网站并发cacheline是内存调度的基本结构,其大小一般为32B或者64B。关于本机具体的配置信息可以在配置文件中看到: 这里可以看到我的这台机器的cacheline大小是64B。对于cacheline在多核处理器中有一个伪共享的状态,具体可以参考以下博客:高…

cacheline是内存调度的基本结构,其大小一般为32B或者64B。关于本机具体的配置信息可以在配置文件中看到:

这里可以看到我的这台机器的cacheline大小是64B。对于cacheline在多核处理器中有一个伪共享的状态,具体可以参考以下博客:高速缓存伪共享 - 知乎(这个大佬写了1K多篇文章,我感觉需要好好消化消化。)

所谓“伪共享”实际上是主存中的一个cacheline中的内容,在同一时刻只能被多核中的一个捕获处理。

程序如下:

#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关键字,这个关键字的作用在于将缓存和主存硬绑定,有点同步打开文件描述符的意思。这样,可以预期到内存会被以cacheline为单位上锁。然后进行编译。

这里用的是O2进行优化,然后执行,结果如下:

这个地方可以发现,在没有填充的情况下,1秒内访问的速度是3.5*10^8;而将struct c填充到128字节的访问次数是4.9*10^8。几乎同样的代码,将最后的单CPU每秒能进行加法数量的统计去掉之后,结果如下:

可以看到,两次的情况,不填充的速度总是要远远逊色于填充的情况。我们在做服务器程序深度优化的时候,要注意这个硬件细节,有时候能够极大地加快程序的运行速度。可以注意到,伪共享状态只是影响了CPU的运行时间,服务器的大量CPU时间会在等待锁中消耗,所以现在无锁代码非常流行。另外为什么增加或者修改代码的大小就会影响CPU的执行效率呢?这个问题还是没有得到答案。

http://www.yayakq.cn/news/933755/

相关文章:

  • 四川省住房和城镇建设官方网站企业网站初始期如何优化
  • 站长资源平台深圳网络推广哪家好
  • 做网站需要学什么语言免费seo
  • 现在网站尺寸做钢铁资讯的网站
  • 巩义网站优化厦门微网站建设公司哪家好
  • 做环评需要关注哪些网站传奇世界官网
  • 网站开发要用多少钱那个网站做视频能挣钱
  • 西安大型网站制作逻辑网络设计
  • 厦门450元网站建设公司怎么制作小程序商城
  • 公司网站维护内容四川企业高端网站建设
  • 宁波网站建设公司比较好中讯高科网站建设
  • 四川做网站多少钱免费网站建设力荐 186一6159一6345绘政正规
  • 个人网站logo设计网站建设彩铃语
  • 一个网址建多个网站上海市建设工程咨询网
  • 东莞企业制作网站网页设计课程速成班
  • 个人网站可以做咨询吗如何在网站后台添加商品
  • vs2015做网站wordpress导航栏改字体
  • 织梦模板怎么验证网站如何百度搜索到自己的网站
  • 乡村旅游网站的建设分析wordpress数据库连接错误
  • 网站源码交易平台全国企业信用信息平台
  • 用WordPress的网站有哪些张家港外贸网站设计
  • flash素材网站有哪些网站后台html5模板
  • 设计素材网站黄金烤肠建网站要买服务器吗
  • 网站流量是怎么赚钱的快速建站公司怎么样
  • 网站建设概算wordpress 电子商务主题
  • 企业网站营销的优缺点及案例做视频开头动画网站
  • 设计上海网站建设免费申请个人网站申请
  • 自己做的网站可以挂在哪里网页游戏大全链接
  • 云端网站建设电视剧男女直接做视频网站
  • 网站开发虚拟电话网上申请平台怎么申请