我的名字叫戴维德·福蒂蒂(Davide Faconti),我的工作是世界上最好的工作之一:我从事机器人技术。
这个博客/存储库维持在我的业余时间,与我在那里的工作无关。因此,意见(和模因)都是我的,并不以任何方式代表我的雇主。
我喜欢C ++编程和开源,这本“日记”是我对OSS社区的小贡献。
在C ++中优化代码是没有人可以抗拒的。您可以玩得开心,并假装自己正在为组织做一些有用的事情!
在此存储库中,我将记录一些简单的设计模式,以改善您的代码,并在C ++中删除不必要的开销。
如果您是经验丰富的C ++专家,那么您可能已经拥有自己的一套规则。
这些规则可帮助您看起来像是一位不良的屁股/摇滚明星/10X工程师。
您是那种随便掉下std :: vector <> ::保留在循环和点头,微笑着,研究绩效提高和您的团队成员惊讶的人。

希望该存储库中的示例能够帮助您实现上师的地位,并且作为副作用,可以使地球免于全球变暖,从而使无用的CPU周期免于浪费。
然后,不幸的是,地球另一端的某人将开始开采比特币或在Python中写下她/他的申请,而您为省电而付出的所有努力都是什么。
我在开玩笑,Python开发人员,我们爱您!
叙述者:“他不是在开玩笑……”
任何关注绩效的人应该做的第一件事是:
我和我的同事几乎总是错误的,因为代码很慢的原因。
有时我们是对的,但是很难事先知道重构如何改善性能。良好的分析工具在几分钟内显示出“低悬挂果”:最低工作,最大收益!
总结:10分钟分析可以节省您数小时的猜测和重构。
我在Linux中的“ goto”工具是热点和堆。我知道Windows也有类似的工具。

在基准战争中,如果您是士兵,那么这些是您的步枪和手榴弹。
一旦您知道该代码的哪一部分应该得到优化,则可能需要使用Google基准测量在非常特定的类或功能中所花费的时间。
您甚至可以在此处在线运行Google Benchmark:Quick-bench.com。

写出好的代码就像刷牙一样:您应该在不考虑太多的情况下做到这一点。
这是您需要训练的肌肉,随着时间的流逝,它会变得更强壮。但是请放心:一旦开始,您将开始看到出令人惊讶的简单模式,并且在许多不同的用例中起作用。
剧透警报:我最受欢迎的技巧之一是最大程度地减少堆的数量。您不知道有多大帮助。
但是,让我们绝对清楚一点:
换句话说,在执行代码上的任何更改之前,三思而后行,这会使它不太可读或难以调试,只是因为您认为它可能会快2.5%。
要获得更舒适的阅读体验,请访问:https://cpp-optimizatization.netlify.app
默认情况下使用const参考。
移动语义(todo)。
返回值优化(todo)。
使用std :: vector <> ::默认储备
“我已经学会了大学的链接列表,我应该使用它们吗?” NOOOPE。
为此,您不需要std::map<> 。
小矢量优化
字符串是(几乎)向量
当不用担心时:小字符串优化。
字符串串联: operator+的错误安全感。
std::string_view :一见钟情(todo)。
示例:2D/3D以正确的方式转换。
在2D矩阵上迭代:不优雅,表现更多。
boost::container::flat_map 。您不会想象接下来发生了什么。更简单,更快的方法来过滤PCL中的点云。
快速回文:有条件分支的成本
这项工作是根据CC BY-SA 4.0许可的