浅谈面向性能的开发

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 大部分者开发者入行都是功能实现角度入行,大部分测试人员也是相似的经历。一般项目都是最后时间跟性能较劲,由于系统的复杂性和变更的成本等导致性能工作多数是草草收尾。有没有更好的工程实践呢?有!感谢刚入行的几年的开发工作经历,养成了面向性能、面向稳定性、面向功能的持续开发实践的习惯。现在这里分享给大家!

背景

大部分者开发者入行都是功能实现角度入行,大部分测试人员也是相似的经历。一般项目都是最后时间跟性能较劲,由于系统的复杂性和变更的成本等导致性能工作多数是草草收尾。有没有更好的工程实践呢?
有!
感谢刚入行的几年的开发工作经历,养成了面向性能、面向稳定性、面向功能的持续开发实践的习惯。现在这里分享给大家!

定义

本文所谈的开发包括需求、设计、实现、测试,即广义的开发。

面向性能的需求分析

离开业务需求谈高性能容易陷入为技术而技术的陷阱。抛开资源、成本谈高性能则容易导致不必要的项目投入。
常规产品、系统除了功能需求外,都会伴随着性能需求。只是因其隐蔽性,导致不是所有的需求提出者都能想到或能给出准确的性能需求。此时就需要系统架构师帮助客户梳理和制定合理的性能需求。性能需求至少包括以下几个角度的信息:

  • 什么场景?
  • 什么数据量下?
  • 多大的业务并发情况下?
  • 多大的计算、网络的资源基础上?
  • 怎么定义一个性能评估模型?如 TPCC。

面向性能的架构设计

所有架构都有其基础的性能损耗,一方面是性能得以实现的基础,另一方面也是性能上限的瓶颈。

  • 比如引入了缓存就可能比不用缓存的要高性能,但同时引入了数据一致性问题,增加了系统的复杂度和脆弱性;
  • 比如引入的异步处理,增加了反馈的及时性,同时导致原本一次性的操作被分解为多个操作的协同;
  • 比如引入了微服务架构,获取了水平扩展能力,但因增加了服务间调用增加系统性能的损耗。

要逐渐积累一些基本基本组件的性能数据。

  • 如广域网的通讯时间几十毫秒很常见;
  • 比如数据库的读取和写入是有很大的不同;
  • 比如很多系统都有隐式的缓存,如数据库、文件系统。

要知道架构设计的重点之一是平衡各种需求

  • 功能需求
  • 性能需求
  • 容量需求
  • 稳定性需求
  • 可维护性需求

要将系统的性能需求拆解为子系统、子模块的性能需求,比如整体对外需要 1 秒完成数据处理,有代理、计算、存储 3 个环节,则留给计算环节的平均耗时为多少?

面向性能的系统实现

在很多情况下,系统实现和系统设计是彼此交错的两类工作。在将系统架构落实为系统实现时,要从多个层次来实现系统。一些好的开发实践包括:

  • 在开发过程中,除了设计面向功能测试的单元测试外,还要开发面向性能的测试框架;
  • 构建符合性能测试需求的基础数据;
  • 随着代码的推进,周期性运行性能测试框架,持续跟踪性能劣化的趋势,将其控制在需求范围内;
  • 同样的功能有 N 种实现方式,但性能千差万别,甚至 do while 和 for 都要反复权衡写法。

性能测试与性能优化

性能测试本质上是性能摸底,性能测试不能改变系统的性能,但有助于对系统性能指标、性能瓶颈达成共识。
性能测试的设计考验的是技术人员的综合能力。
性能测试的执行考验的是技术人员的耐心和细心。
性能测试的度量有时会干扰被测对象的性能,如写日志、输出到屏幕、测试数据的累计都可能拉低系统的性能。
性能优化的推进需要有系统的视野,不要过早陷入局部优化的泥潭,至少要做好 2 个准备,以形成改进的闭环:

  • 系统分段度量的能力
  • 系统改进度量的能力

性能神话

  • 期望在测试阶段能优化性能

木已成舟,架构是性能优化的天花板,代码是性能优化的约束。

  • 期望性能开发的银弹

从项目角度看,加缓存不一定性价比高;一个系统上的性能开发经验不一定能迁移到另一个系统上,注意场景、资源等的差异。

云顶云(yundingyun.com)是国内首批专注于云计算服务的提供商,致力于“让云计算更简单”。做为阿里云五星授权服务中心,云顶云致力于为企业和政府提供方案咨询、架构设计、部署实施、系统定制、运维托管、技术培训等全方位“4S”级公有云、私有云定制化服务。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
7月前
|
监控 API Android开发
构建高效的安卓应用:内存优化策略详解
【4月更文挑战第21天】在移动应用开发中,内存管理是影响性能的关键因素之一。尤其对于安卓平台,由于设备硬件配置差异较大,良好的内存优化策略成为确保应用流畅运行的必要条件。本文将深入探讨针对安卓平台的内存优化技巧,包括内存泄漏的预防、合理的内存分配与回收以及使用工具进行监控和分析。通过实践案例分析,旨在为开发者提供一套系统的内存优化解决方案,帮助提升应用性能并减少崩溃率。
|
7月前
|
缓存 前端开发 JavaScript
如何优化前端性能提升用户体验
在Web应用中,前端性能是影响用户体验和转化率的关键因素之一。本文将介绍一些优化前端性能的方法,包括减少HTTP请求、使用缓存、压缩代码等。
|
21天前
|
缓存 负载均衡 算法
性能优化:提升系统效率的关键
性能优化:提升系统效率的关键
35 1
|
25天前
|
算法 JavaScript Java
weiV 框架的性能
【10月更文挑战第30天】weiV 框架目前还在快速迭代中,其性能可能会随着后续的优化和改进不断提升。但总体而言,从目前已有的信息和特性来看,weiV 框架在性能方面具有很大的潜力,有望为 Android 开发者提供一种高效、灵活的声明式 UI 开发解决方案。
23 1
|
5月前
|
运维 监控 算法
为什么需要优化Java应用的性能与稳定性?
为什么需要优化Java应用的性能与稳定性?
|
4月前
|
数据库 Android开发 开发者
打造高效安卓应用:从代码优化到性能提升
【8月更文挑战第2天】在移动设备的海洋中,安卓应用的效能直接关系到用户体验的好坏。本文旨在深入探讨如何通过代码层面的优化技巧和策略来提升安卓应用的性能。我们将一起探索减少内存消耗、避免不必要的CPU使用以及提高应用响应速度的方法。文章将结合具体的代码示例,为开发者提供可行的优化建议,帮助他们构建更流畅、更高效的安卓应用。
65 2
|
4月前
|
消息中间件 缓存 Java
如何优化大型Java后端系统的性能:从代码到架构
当面对大型Java后端系统时,性能优化不仅仅是简单地提高代码效率或硬件资源的投入,而是涉及到多层次的技术策略。本篇文章将从代码层面的优化到系统架构的调整,详细探讨如何通过多种方式来提升Java后端系统的性能。通过对常见问题的深入分析和实际案例的分享,我们将探索有效的性能优化策略,帮助开发者构建更高效、更可靠的后端系统。
|
5月前
|
缓存 监控 测试技术
优化PHP应用性能的关键技巧与实践
提升PHP应用性能是开发者关注的重点之一,本文探讨了几种有效的优化技巧和实际应用策略,包括缓存策略的选择、代码优化建议以及服务器端配置的最佳实践,旨在帮助开发者有效提升PHP应用的运行效率和响应速度。【7月更文挑战第2天】
35 0
|
7月前
|
缓存 Java Android开发
构建高效安卓应用:内存优化策略详解
【5月更文挑战第22天】在构建高性能的安卓应用中,内存管理是至关重要的方面。不恰当的内存使用不仅会导致应用运行缓慢,还可能引发系统崩溃和其他稳定性问题。本文将深入探讨针对安卓平台的内存优化技巧,包括避免内存泄漏、合理使用数据结构和缓存策略,以及利用安卓特有的内存管理工具。我们将通过实际案例分析,展示如何诊断内存问题,并采取有效措施以提升应用性能和用户体验。
|
7月前
|
算法 Java 测试技术
性能工具之代码级性能测试工具ContiPerf
【2月更文挑战第23天】性能工具之代码级性能测试工具ContiPerf
410 1
性能工具之代码级性能测试工具ContiPerf