浅聊代码性能优化 | 青训营笔记

554 阅读5分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

浅聊Go自动内存管理

前言

本堂课重点内容:

本堂课主要介绍了以下内容:

  • 性能优化的目的
  • 性能优化的层面
  • 性能优化和软件质量

正文

详细知识点介绍:

性能优化

性能优化是指通过改进代码和使用优化工具来提高程序的性能。常见的优化方法包括使用内置的性能工具来分析代码性能,避免不必要的内存分配和避免锁的使用。

性能优化的目的是使程序运行得更快,更稳定,更节省资源。对于高并发高流量的系统来说尤其重要,因为这些系统需要高效率和高吞吐量来处理大量请求。同时,通过性能优化,也能提升用户体验

性能优化的层面

性能优化可以在不同的层面进行,这些层面包括:

  • 业务层优化
    • 业务代码层面:在应用程序的业务逻辑层面针对特定问题对代码进行优化,提高程序的效率。
  • 语言运行时优化
    • SDK层面:使用高效的SDK来代替低效的SDK。
    • 基础库层面:使用高性能的基础库来代替低性能的基础库。
    • 语言运行时层面:使用高效的语言运行时来提高程序的性能。
      • 包括:代码优化、垃圾内存优化、内存管理优化、多线程优化、编译优化、JIT优化等更通用的性能问题
      • 运用 Tradeoffs 思维在满足多个目标时做出权衡决策
    • OS层面:使用高性能的操作系统来提高程序的性能。 需要注意的点: 无论是业务层优化,还是语言运行时优化,都应当采用数据驱动的思维:
  • 自动化性能分析工具:pprof —— 找到并解决性能问题
  • 通过数据,首先找到并优化最大的性能瓶颈,再优化小的性能瓶颈
  • 即:先收集数据,再进行分析,最后根据分析结果进行决策和设计

性能优化和软件质量

性能优化和软件质量是软件开发过程中的重要部分,它们有着密切的关系。

软件质量是指软件能够满足用户需求、符合预期性能、可维护性和可用性等方面的程度。软件质量包括功能性、可靠性、易用性、效率性、可维护性和可扩展性等。

  1. 软件质量: 从需求分析、设计、编码、测试等阶段进行。在每个阶段都应该对软件进行质量检查,确保软件符合需求和质量标准
  2. 改进具体实现: 通过不断改进具体实现来提高软件质量。这可以通过代码重构、重新设计、更新技术等方式来实现。
  3. 测试用例: 测试用例是验证软件质量的重要手段。应该编写全面的测试用例,确保软件能够正确地处理各种情况,并且方便回归测试
  4. 文档: 文档是保证软件质量的重要部分。应该编写详细的文档,包括需求文档、设计文档、测试文档等。
  5. 隔离: 使用隔离技术,如容器化、虚拟化等,可以有效地保证软件在不同环境中的稳定性和可靠性
  6. 可观测: 软件应该具有良好的可观测性,方便监控和诊断。这可以通过添加日志、监控指标等来实现。

实践练习例子:

  • 有什么实践举例帮助理解知识点?

总结

课后个人总结:

本节主要讲了以下内容:

  • 性能优化的基本问题
    • 为什么做性能优化
    • 做了性能优化能带来什么
  • 性能优化的两个层面
    • 业务层
    • 语言运行时
  • 性能优化的可维护性

本章有什么知识点不容易掌握?

性能优化和软件质量是软件开发过程中的重要部分,它们有着密切的关系,并且贯穿整个开发过程。这些知识点都是不容易掌握的。

其中,性能优化主要涉及代码优化、垃圾回收优化、内存管理优化、多线程优化、编译优化、JIT优化等方面,这些知识点都需要深入研究才能掌握。

软件质量保证也是一个复杂的过程,需要全面考虑功能性、可靠性、易用性、效率性、可维护性和可扩展性等多个方面。

另外,软件质量保证和性能优化不仅需要技术知识,还需要经验和判断力。

总之,性能优化和软件质量保证是一个复杂的过程,需要全面考虑多个方面,需要不断学习和实践才能掌握。

什么地方容易与其他内容混淆?

  • 业务代码层面的优化与软件质量保证可能会有一些重叠,因为软件质量保证也需要考虑业务代码的可靠性和可维护性。

  • 可观测性和监控是性能优化和软件质量保证的重要部分,但在实际开发中可能会被误认为是性能优化的一部分而非质量保证。

  • 性能优化和软件质量保证都需要考虑内存管理和垃圾回收,但在实际开发中可能会将其误认为是性能优化的一部分而非质量保证的部分。

  • 性能优化和软件质量保证都需要考虑编译优化,但在实际开发中可能会将其误认为是性能优化的一部分而非质量保证的部分。

  • 性能优化和软件质量保证都需要考虑多线程优化,但在实际开发中可能会将其误认为是性能优化的一部分而非质量保证的部分。

因此,在实际开发中,需要全面考虑性能优化和软件质量保证的关系,避免将其误认为是独立的问题。

最后

引用参考:

1.性能优化

2.软件质量