性能优化分为,业务优化和技术优化。业务优化一般属于产品和管理的范畴,作为后端开发,一般应有技术优化。 技术优化一般有七类技术手段。
性能优化的重点是在照顾性能的前提下,达到资源利用的最优状态。
写代码的时候,一般一个方法函数用的多的话,我们就会设置成公共的方法,这就是复用的意思,以后直接调用就可以了。
那么复用的思想在优化中,可以使用为:缓冲和缓存。
缓冲(Buffer),常见于对数据的暂存,然后批量传输或者写入。多使用顺序方式,用来缓解不同设备之间频繁地、缓慢地随机写,缓冲主要针对的是写操作。
缓存(Cache),常见于对已读取数据的复用,通过将它们缓存在相对高速的区域,缓存主要针对的是读操作。
类似的,也有对于对象的池化操作,比如数据库连接池、线程池等,在 Java 中使用得非常频繁。由于这些对象的创建和销毁成本都比较大,我们在使用之后,也会将这部分对象暂时存储,下次用的时候,就不用再走一遍耗时的初始化操作了。
(1)并行执行
①多机集群:采用负载均衡的方式,将流量或者计算拆分多个部分,比如说hadoop、mapreduce。
②采用多进程,比如说Nginx,采用NIO编程模型,Master统一管理Worker进程,然后Worker进程进行真正的请求代理,这也能很好的利用硬件的多个CPU。
③使用多线程,例如:Netty,Reactor编程模型,NIO等等。例如Go,有更加轻量的:协程,但目前在java中协程并不是十分成熟。
(2)同步-》异步 异步的编程方式可以支持横向扩容,缓解瞬时压力。
(3)惰性加载 采用一些比较好的设计模式来优化业务模块,比如单例模式,代理模式等等。在Swing窗口的时候,如果要显示比较多的图片,就可以先加载一个占位符,然后通过后台线程慢慢加载所需要的资源,这就可以避免窗口的僵死。
都知道 XML 的表现形式是非常好的,那为什么还有 JSON 呢?除了书写要简单一些,一个重要的原因就是它的体积变小了,传输效率和解析效率变高了,像 Google 的 Protobuf,体积就更小了一些。虽然可读性降低,但在一些高并发场景下(如 RPC),能够显著提高效率,这是典型的对结果集的优化。
注:文章学习内容来源网络,侵权删。