代码优化

35个Java代码优化的细节,你知道几个?

不羁岁月 提交于 2019-11-28 22:54:46
前言 代码 优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。 代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。 代码优化的目标是: 减小代码的体积 提高代码运行的效率 代码优化细节 1、尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。 此举能够使性能平均提高50% 。 2、尽量重用对象 特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替

JVM(十三):后端编译优化

烈酒焚心 提交于 2019-11-28 22:47:20
JVM(十三):后端编译优化 在 JVM(一):源文件的转变 中我们介绍了 Java 中的前端优化,即将 Java 源代码转换为字节码文件。在本文中,我们将介绍字节码文件如何转换为本地机器码,并如何对代码进行优化,以提高性能。因为不同的虚拟机,字节码优化引擎不同,因此本文采用 JIT 来作为例子,其也是 HotSpot 中的默认编译器。 架构 我们都知道将代码转换为机器码有两种方式,而在 HotSpot 中采用了却两者全部都涉及到了,其采用了解释器和编译器并存的架构。那么其这样的目的是什么呢? 首先我们知道解释执行,可以大大提高程序启动时的效率,因为在这个时候需要执行什么代码,才对对应的源码进行翻译,将其变为机器码,因此也提高了启动时效率; 而编译执行的优点则是可以获得更高的执行效率,因为其将中间代码全部编译成了与机器相关的本地代码,并且在这一阶段,有些编译器还会对编译后的代码进行初步的优化,这也使得效率更加的优秀。 因此 Hotspot 开始执行的时候采用解释执行,获得优良的启动效率,而在代码执行过程中,对执行情况进行监控,运用以前所说的 热点代码编译技术 将热点代码编译成本地机器码,并根据执行情况进行优化,以获得两者全部的优点。 可能会有读者问道,我的代码部署在服务器上,第一次慢一点就慢一点,我只采用编译执行不行吗? 其实不然,首先因为编译器需要对代码进行优化

多级联查前台代码优化【 FDC_View_Status_Report_By_Res】

删除回忆录丶 提交于 2019-11-28 22:25:17
【接】 多表联查(左联)计算多个子查询的Count数作为属性输出 优化点:1、尽量不用goto语句跳转,用if-else if-else if -else替代。 2、避免穷举的方式获取显示数据,尽量用循环(for、while等) 3、用switch-case优化过多的if判断 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Linq; using System.Windows.Forms; using DevExpress.XtraEditors; using MESCore; using MESCore.ListRoutines; using DevExpress.XtraCharts; namespace FDCCore { public partial class frmFDCViewStatusSummary : BaseForm, IBaseFormFunc { public frmFDCViewStatusSummary() { InitializeComponent(); } public

day8

萝らか妹 提交于 2019-11-28 16:11:48
组队:马云龙 廖鸿彬 项目:项目4-订单溯源系统设计与实现 今日完成: 1.登陆的验证 2.订单数据获取 3.gitlab仓库搭建 4.部分代码的优化 明日计划: 实现订单跳转的算法 优化代码 每日小结: 今天学习了list的调用及使用,通过后台java算法实现前端jsp的输出 来源: https://www.cnblogs.com/jiuzhouzone/p/11414789.html

阿里资深工程师教你如何优化 Java 代码!

巧了我就是萌 提交于 2019-11-28 14:43:13
作者 | 王超 责编 | 伍杏玲 明代王阳明先生在《传习录》谈为学之道时说: 私欲日生,如地上尘,一日不扫,便又有一层。着实用功,便见道无终穷,愈探愈深,必使精白无一毫不彻方可。 代码中的"坏味道",如"私欲"如"灰尘",每天都在增加,一日不去清除,便会越累越多。如果用功去清除这些"坏味道",不仅能提高自己的编码水平,也能使代码变得"精白无一毫不彻"。这里,整理了日常工作中的一些"坏味道",及清理方法,供大家参考。 让代码性能更高 需要 Map 的主键和取值时,应该迭代 entrySet() 当循环中只需要 Map 的主键时,迭代 keySet() 是正确的。但是,当需要主键和取值时,迭代 entrySet() 才是更高效的做法,比先迭代 keySet() 后再去 get 取值性能更佳。 反例: Map<String, String> map = ...; for (String key : map.keySet()) { String value = map.get(key); ... } 正例: Map<String, String> map = ...; for (Map.Entry<String, String> entry : map.entrySet()) { String key = entry.getKey(); String value = entry

JAVA代码优化常用方法

自古美人都是妖i 提交于 2019-11-28 13:50:32
代码优化 ,这个在开发界内是个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。 代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。 代码优化的目标是 减小代码的体积 提高代码运行的效率 代码优化细节 1、尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。 此举能够使性能平均提高50% 。 2、尽量重用对象 特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替

50种方法优化SQL Server

冷暖自知 提交于 2019-11-28 11:38:14
查询速度慢的原因很多,常见如下几种:      1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)      2、I/O吞吐量小,形成了瓶颈效应。      3、没有创建计算列导致查询不优化。      4、内存不足      5、网络速度慢      6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)      7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)      8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。      9、返回了不必要的行和列      10、查询语句不好,没有优化   可以通过如下方法来优化查询 :      1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要.      2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)      3、升级硬件      4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段      5、提高网速;      6、扩大服务器的内存,Windows 2000和SQL

50种方法优化SQL Server

折月煮酒 提交于 2019-11-28 11:37:57
查询速度慢的原因很多,常见如下几种:      1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)      2、I/O吞吐量小,形成了瓶颈效应。      3、没有创建计算列导致查询不优化。      4、内存不足      5、网络速度慢      6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)      7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)      8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。      9、返回了不必要的行和列      10、查询语句不好,没有优化   可以通过如下方法来优化查询 :      1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要.      2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)      3、升级硬件      4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段      5、提高网速;      6、扩大服务器的内存,Windows 2000和SQL

优化过多的if else嵌套

♀尐吖头ヾ 提交于 2019-11-28 05:38:05
前言:   最近因为工作中业务需要,代码里用了大量的if else嵌套。想着如何优化,刚好在网上看到一篇文章,个人觉得写的还不错。这边转载过来以后后续学习。根据个人理解和需要,自己做了一点修改整理。 作者:leowudev 原文:http://www.apkbus.com/blog-970703-78964.html(已征得原文作者同意,后续转载需注明来源!!!) 写在前面: 不知大家有没遇到过像“横放着的金字塔”一样的 if else 嵌套: 1 if (true) { 2 if (true) { 3 if (true) { 4 if (true) { 5 if (true) { 6 if (true) { 7 8 } 9 } 10 } 11 } 12 } 13 } 我并没夸大其词,我是真的遇到过了!嵌套6、7层,一个函数几百行,简!直!看!死!人! if else 作为每种编程语言都不可或缺的条件语句,我们在编程时会大量的用到。但 if else 一般不建议嵌套超过三层,如果一段代码存在过多的 if else 嵌套,代码的可读性就会急速下降,后期维护难度也大大提高。所以,我们程序员都应该尽量避免过多的 if else 嵌套。下面将会谈谈我在工作中如何减少 if else 嵌套的。 正文: 在谈我的方法之前,不妨先用个例子来说明 if else 嵌套过多的弊端。

代码优化之SQL优化

给你一囗甜甜゛ 提交于 2019-11-28 05:11:51
一、为什么要做sql优化? 在数据量较大,好的sql语句和合理的表结构,能够呈倍的提高执行效率,从而提高程序的可用性和用户体验性。 二、优化方向 1.sql语句优化(尽量避免造成全表扫描) (1)查询时尽量不要用* 号 (2)减少子查询和使用in,使用exits 例如 select id,name,age from student where id in (select id from javaCouse) select id,name,age from student where id exits (select id from javaCouse) (3)尽量不要使用 or(or不走索引),用union进行结果集的合并,加入两个结果集不存在重复数据,那么最好用unionAll (4)那些可以过滤掉大量数据的条件必须记录在where子句的末尾 (5)关联查询时用数据量较小的表做基表和通过where条件进行筛选以减小笛卡尔积 (6)禁止在WHERE条件的上使用函数或者计算 (7)禁止使用模糊查询 like '%%',如果需要用到,则尽量使用'%' (8) 2.表结构设计 (1)尽量减少不必要的关联查询,合理的增加“冗余”字段 (2)合理的建立主外键,连接查询时用主外键进行连接 (3)建立数据表时,能用int型的数据的字段尽量用int 型