开发人员必备技能之一“性能优化”

软件程序的性能问题在设计价段就应该有充分的考虑,根据实际需求制定对应的技术方案和实现方法,比如软件运行后的并发用户数、数据存储量等要求;通常所说的性能优化无非是从并发用户量、吞吐量、安全可靠性这三个方面着手解决。

网络配图 至于什么是性能优化这个问题,可能不同环境对它会有不同的理解,今天我们也不再深究这个问题;只要明白开发软件的目的是为用户提供高效快捷的服务,并要有良好的用户体验,保证在用户使用过程不出任何问题;举个生活的例子,我们经常会去银行办理业务,如果银行的系统在使用过程出了问题,那影响会有多大,可以想象到。对开发人员而言首先要从现有的应用和应用服务器获取最大的性能,其次才考虑添加硬件设备的投入。 并发用户量、吞吐量、安全可靠性的具体含义,继续往下看。 一、并发用户量 简单的讲是同一时间,多个用户同时访问应用时,并数据的处理能力; 二、吞吐量 一般应用和应用服务器的吞吐量可以用每秒完成的事务数量来表示,它从一个侧面反映了应用和应用服务器的运行是否正常,体现了服务器的能力。我们的目标是通过应用和应用服务器的最优调整,来提高服务器的吞吐能力; 三、安全可靠性 应用服务器出现故障是不可避免的,最主要的原因是网络延迟或超时,而我们优化的主要工作就是保证用户能及时收到自己请求的信息。

网络配图 软件系统优化是一个较复杂的问题,涉及到软件的各个方面:需求、模块划分、数据库设计、程序编码以及一些特殊的优化方法如缓存技术等。 对编码人员来说,最关键的是程序编码,我总结了5条优化性能的编码建议: 1、尽可能重用对象; “万物皆对象”,如何更好的创建和使用对象,是优化中要考虑的一个重要方面。 2、特别注意循环代码的实现; 循环语句是编写代码的基本语法,可以算的上随处可见。一些小的细节优化能带来性能上的提升,而对循环体的一些改写,能带来性能的大幅提升。 3、如List列表的数据量巨大,则要使用LinkedList实现; LinkedList内部采用双向链表作为数据结构,比ArrayList占用较多内存空间,且随机访问操作较慢,但插入删除操作很快(仅需进行链表操作,无须大量移动或复制)。

网络配图 4、合理使用session存储数据 session为存储数据提供了一种比较好的机制,但使用时要注意两点:(1)、使用完session中的存储对象后,立即主动的session中将其删除并释放;(2)、将存储在session中的对象,改为通过request进行传递; 5、正确使用缓存技术 可以把缓存比喻成“一个储水缸”,它的特点就是把数据或资源保存在访问开销小的地方,一般保存在内存中,它在整个应用生命期都可以被访问,对资源来说,是可以反复使用的,因此缓存的访问开销比直接访问资源开销要小。 先这么多了,欢迎补充!!!

原文发布于微信公众号 - Java学习网(javalearns)

原文发表时间:2017-10-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏花叔的专栏

解读小程序权限,谈谈817产品功能迭代

话说,微信小程序最近变动频繁,两天发布了两次更新,相当有诚意。 不少同学问为啥花叔还没更新文章,主要原因是最近有点忙就搁置了,不过没关系,趁周末有空给大家解读一...

2985
来自专栏Golang语言社区

如何使用 Go 语言写游戏服务器?

之前先后用Erlang,nodejs做过tcp,http的游戏服务器。接触了golang一两个月(纯新手),想在最近的tcp网游项目中使用,但又担心以下问题: ...

5766
来自专栏跨界架构师

分布式系统关注点——「负载均衡」到底该如何实施?

        前面两篇《分布式系统关注点——初识「高可用」》、《分布式系统关注点——仅需这一篇,吃透「负载均衡」妥妥的》看完后,相信大家对实现高可用的思路和负...

1501
来自专栏Golang语言社区

如何使用 Go 语言写游戏服务器?

之前先后用Erlang,nodejs做过tcp,http的游戏服务器。接触了golang一两个月(纯新手),想在最近的tcp网游项目中使用,但又担心以下问题: ...

1.2K5
来自专栏腾讯移动品质中心TMQ的专栏

腾讯TMQ在线沙龙回顾|EP(测试分析+分层自动化测试)实践

答:Hook英文翻译过来就是「钩子」的意思,那我们在什么时候使用这个「钩子」呢?在 Android 操作系统中系统维护着自己的一套事件分发机制。应用程序,包括应...

2352
来自专栏Golang语言社区

如何使用 Go 语言写游戏服务器?

之前先后用Erlang,nodejs做过tcp,http的游戏服务器。接触了golang一两个月(纯新手),想在最近的tcp网游项目中使用,但又担心以下问题: ...

7984
来自专栏PPV课数据科学社区

【数据可视化专题】数据可视化:前端数据之美如何展示?

随着 web 技术的蓬勃发展,前端的展示、交互越来越复杂,在用户的访问、操作过程中产生了大量的数据。由此,前端的数据分析也变得尤为重要。当然,对于站长来说,你可...

59210
来自专栏企鹅号快讯

如何改善遗留的代码库

作者 | Jacques Mattheij 译者 | aiwhj 在每一个程序员、项目管理员、团队领导的一生中,这都会至少发生一次。原来的程序员早已离职去度假了...

1967
来自专栏喔家ArchiSelf

IoT设备的自我测试

东西坏了,事情也出了差错。 简单的说就是 XX发生了。 不管用什么词,事实上我们都生活在一个不完美的世界里。 在嵌入式系统中,有很多失败的可能。 在简单的系统中...

1653
来自专栏PHP在线

高并发量网站解决方案

一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性 能的要求都很简单。随...

4918

扫码关注云+社区

领取腾讯云代金券