XuQi's Blog

  • 首页

  • 归档

C++性能优化指南

发表于 2019-06-25 更新于 2019-10-20

优化动态分配内存的变量

减少动态变量的使用

静态地创建类实例
1
2
3
MyClass myInstance("aaaa"); // Good
MyClass *pInst = new MyClass("aaaa");
MyClass myInstance = MyClass("aaaa");
静态地创建类成员变量

两段初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class MyClass {
public:
MyClass():m_pclassb(nullptr)
{
m_pclassb = new ClassB("ccc");
}
private:
ClassB *m_pclassb;
}

// Good 两段初始化
class ClassB()
{
public:
void Init();
}

class MyClass {
public:
MyClass() {};
private:
ClassB m_classb;
}

使用静态数据结构

使用std::array 替代std::vector

如果编译时知道数组大小

静态地创建链式数据结构

![](C++性能优化指南/屏幕快照 2019-06-25 下午8.44.33.png)

在数组中创建二叉树

二叉树一般数链式结构,但是数组形式的二叉树对于访问更加方便2i和2i + 1,但是平衡二叉树会低效。

用std::make_shared 替代new 表达式
1
2
3
std::share_ptr<MyClass> p(new MyClass("aaa"));
std::share_ptr<MyClass> p = std::make_shared<MyClass>("aaa"); // Good
auto p = std::make_shared<MyClass>("aaa"); // Good

减少动态变量的重新分配

预分配动态变量防止重新分配
在循环外创建动态变量
# C++性能优化指南
socket编程
MySQL数据库
  • 文章目录
  • 站点概览

XuQi

44 日志
30 标签
  1. 1. 优化动态分配内存的变量
    1. 1.1. 减少动态变量的使用
      1. 1.1.1. 静态地创建类实例
      2. 1.1.2. 静态地创建类成员变量
    2. 1.2. 使用静态数据结构
      1. 1.2.1. 使用std::array 替代std::vector
      2. 1.2.2. 静态地创建链式数据结构
      3. 1.2.3. 在数组中创建二叉树
      4. 1.2.4. 用std::make_shared 替代new 表达式
    3. 1.3. 减少动态变量的重新分配
      1. 1.3.1. 预分配动态变量防止重新分配
      2. 1.3.2. 在循环外创建动态变量
© 2019 XuQi
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Muse v7.3.0