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

政府网站集约化建设告知书微信seo

政府网站集约化建设告知书,微信seo,江苏省城乡建设厅建设网站,免费注册域名哪里有最近看完了《C性能白皮书》,这本书列出了一些性能优化的思路,不过只是一些指引,没有讲具体细节,我整理出了其中的关键点分享给大家: 硬件篇 作为一个程序员,想要性能优化,最好要了解些硬件&…

最近看完了《C++性能白皮书》,这本书列出了一些性能优化的思路,不过只是一些指引,没有讲具体细节,我整理出了其中的关键点分享给大家:

硬件篇

作为一个程序员,想要性能优化,最好要了解些硬件,特别是CPU架构的一些知识点:

  • 流水线

  • 分支预测

  • 寄存器重命名

  • 数据预取

  • 指令重排和乱序执行

  • 同时多线程(超线程)

  • 数据并行 SIMD 单指令多数据

还要了解CPU的特点:

  • 一个处理器上,多条指令可能同时执行

  • 一个处理器上,代码的执行结果会和程序员可观察到的顺序一致,但其他处理器观察到的执行结果可能不是一个顺序

  • 顺序、无跳转的代码性能最高

  • 相邻且对齐的数据访问性能最高

内存方向的优化:

 

要了解基本工具:

  • 编译器:MSVC GCC clang

  • 不同级别的优化:O1 O2 O3 以及他们的主要区别

需要知道性能分析指导下的优化:PGO profile-guided optimization

也就是利用程序运行的profiling数据,指导编译器进一步优化。多测试,找到程序热点,根据数据针对性优化。

还有链接期优化:link-time optimization LTO

LTO可以:

  • 跨翻译单元的函数内联

  • 跨翻译单元的程序整体优化

  • 死代码消除

做性能优化,需要了解性能测试的阿姆达尔定律,80-20原则,20%的代码决定了80%的结果,如果对20%以外的代码进行优化,性价比太低,性能测试的意义就在于此:

  • 找出代码中性能开销最大的部分

  • 测量代码优化之后的实际收益

需要熟练使用性能采样工具:

  • Windows中Visual Studio有自带的性能分析工具

  • Linux有Perf或者gperftools

C++篇

关于C++语言层面的优化,可以在下面这些方向做优化:

  1. 优先栈内存,次之堆内存

  2. 巧妙使用RAII管理资源

  3. 移动语义虽然不好理解,但也可以巧妙使用移动语义减少对象的非必要拷贝

  4. 模板和泛型技巧华而不实,给开发标准库的人使用还好,而且调试难度也较高,我们普通业务开发者只需要做到能看懂即可(个人见解)

  5. 异常是可以考虑使用的,可以看看ISO C++网站和C++ 核心指南62,异常会导致程序的二进制体积有膨胀(5%-15%),异常不能代替所有的错误码,因为异常catch会使得程序性能下降。作者认为:使用异常对于大部分C++项目仍然适用,不使用异常的麻烦大于好处,除非真因为二进制文件和实时性方面的原因需要禁用异常。

  6. 字符串默认类型时 const char[],传参时会退化成const char*,创建全局字符串最好使用const char[]

  7. 标准库容器的方法至少提供了基本异常安全保证:要了解强异常安全保证和无异常保证。

  8. vector的移动构造函数标记为noexcept才会使用移动构造,移动构造函数需要标记为noexcept,如果没有标记,代码性能可能会有较大的负面影响。

  9. shared_ptr构造优先使用make_shared

10.了解function,function用作回调很方便,支持类型擦除,它还有个好处,可以用来存储带状态的函数对象,不像C语言那样需要个void*存储状态。但需要了解它的开销,貌似48个字节是个坎。

11.堆内存管理:可以了解下jemalloc mimalloc tcmalloc

12.输入输出流可以考虑使用ios_base::sync_with_stdio(false)关闭同步,性能会提升,也最好使用\n取代endl,免得频繁刷新缓冲区。可考虑使用fmt

13.并发

  • 需要了解内存序的概念

  • 一些优质的多生产者多消费者并发队列

  • moodycamed::ConcurrentQueue

  • atomic_queue

  • Folly中MPMCQueue

  • 标准库也有些并行策略:

  • execution::seq 序列执行,不可并行

  • par:可并行化

  • par_unseq:可并行化 向量化

  • unseq:可向量化

通用方法篇

通用优化方法

  • 优化原则:不要执行不必要的代码

  • 循环优化,尽量减少临

  • 时对象的创建

  • 结构体设计时最好做到对齐

  • 尽量顺序访问数据,矩阵乘法可以很好的印证CPU Cache的作用,再考虑添加-O3 -march=native开启SIMD自动向量化

  • 缓存争用问题

  • 多看看别人的代码,别人的优化,多用优秀的开源代码


获取更多资源关注公众号;奇牛编程

http://www.hrbkazy.com/news/15092.html

相关文章:

  • 漂亮购物网站欣赏网络技术培训
  • 直接用源码做网站盗版吗网站建设服务公司
  • 网站优化 价格查询网络营销的主要工作有哪些
  • 百度站长工具怎么关闭app拉新推广赚佣金
  • 怎么做门户网站qianhu微建站
  • 单页网页制作视频教程seo工资水平
  • 做经营网站怎么赚钱推广一款app的营销方案
  • 网站建设日志文件网站关键字优化
  • 重庆市住房和城乡建设委员会网站百度推广和百度竞价有什么区别
  • 网站制作乛薇网站运营一个月多少钱
  • 电子商务网站开发教程课后答案账户竞价托管公司
  • 江阳建设集团网站百度提交收录入口
  • 陕西省经营性网站备案百度平台客服
  • spoc课程网站建设杭州网站建设
  • 阿里巴巴 网站建设链接交换平台
  • 2345网址导航app关键词推广优化
  • 蚌埠做网站多少钱百度客服电话人工服务
  • 网站logo设计创意百度电话客服
  • 视频在线观看网站怎么建设淘宝搜索关键词排名查询工具
  • 外网网站建设调研报告软文代写自助发稿平台
  • 南宁哪里有做网站的公司seo高效优化
  • 胶州网站建设公司哪家好市场营销公司有哪些
  • 做游戏网站思想步骤百度seo关键词优化公司
  • 网站开发文档需求模板深圳搜索引擎优化推广
  • 做网站 多少人搜狗网站提交入口
  • 网站备案号 脱离服务商seo手机优化软件哪个好用
  • 规划营销型的网站结构百度云网盘免费资源
  • 私人建设网站长沙网址seo
  • 做网站需要注册什么类型的公司谷歌浏览器网址
  • 交友网网站开发文档网站seo技术能不能赚钱