前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 动态新闻推送 第64期

C++ 动态新闻推送 第64期

作者头像
王很水
发布2022-05-28 10:29:39
3710
发布2022-05-28 10:29:39
举报
文章被收录于专栏:C++ 动态新闻推送

C++ 动态新闻推送 第64期

文章

代码语言:javascript
复制
#include <string>

constexpr auto foo() {
  return std::string{"bar"};
}

static_assert("bar" == foo());

没啥说的

介绍gcc profiler原理。很长

语言律师Arthur O’Dwyer的提案以及实现,看个乐

介绍封装c标准库文件c++做了啥额外的工作,一些额外的名字mangle,不同的分支调用,noexcept之类的

如果是你,你怎么实现optional的复制呢?

比较简单的想法是析构再构造

代码语言:javascript
复制
template <typename T>
auto Optional<T>::operator=(Optional<T> const& rhs) -> Optional<T>& {
    if (has_value_ and rhs.has_value_) {
        value_ = rhs.value_;
    } else if (has_value_ and not rhs.has_value_) {
        value_.~T();
        has_value_ = false;
    } else if (not has_value_ and rhs.has_value_) {
        ::new (&value_) T(rhs.value_);
        has_value_ = true;
    } else {
        // nothing
    }
    return *this;
}

但如果是简单类型,这未免太杀鸡牛刀

如果是Optional<T&>,这可能又不正确。作者仔细的讨论了一番。这里不展开了。复杂

分支和条件移除优化(比如:?表达式)哪个更好?很难说,不一定没有分支更好。但相对好一些

因为:?表达式编译器可能给你加私货,插入if,甚至生成jump,感觉更复杂了

就算你是一行代码,编译器还是可能给你加东西的

代码语言:javascript
复制
unsigned r = ((a & 0xffff0000) != 0) << 4;


unsigned r;
if (a > 65535)
  r = 16;
else
  r = 0;

__builtin_expect 对编译器来说帮助不大,用这个是优化pipeline的,要知道你的业务场景

Gcc 9加了个__builtin_expect_with_probability__builtin_expect更准点

没啥说的

simdjson支持avx512更快了

这人Johny’s Software Lab LLC博客挺不错。原来是个咨询公司啊 这怎么能赚到钱的。

我对国外很多软件的咨询赚钱模式感到不可思议。国内根本没有这个环境。归根到底是国内人才太多了?

说回正题

这篇文章讲了一些性能优化点,比如用定制内存分配器让数据局部性更好,以及各种省数据集的操作

说过很多次,cache应用/proxy应用,定制的内存分配器,非常有用,非常降低延迟,比如这个https://github.com/moya-lang/Allocator/blob/master/Allocator.h 别看实现挫,非常够用

还介绍了一些工具,比如https://github.com/andikleen/pmu-tools

看不懂了。

怎么判定一个数组已经排好序了。正常来说遍历一边就行了。不过c++有个is_sorted接口,

另外用 adjacent_find也是可以的

作者写了个c版的工具,输出代码目录的各种数据(行数,大小等等)这个博客是心路历程,代码在这里https://github.com/skeeto/scratch/blob/master/misc/watc.c

作者写VS Code js插件的,查bug查到编译器头上了。这个是心路历程。

手把手教你用锁

视频

没啥说的。vector<bool>没人用。

新项目介绍/版本更新

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C++ 动态新闻推送 第64期
    • 文章
      • 视频
        • 新项目介绍/版本更新
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档