扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
说到代码优化,每个人或多或少都掌握一到两种方法,但是这样的方法对提升代码运行效率效果不大,最重要是对代码的重视和了解,这样才能提升代码的运行效率。
创新互联服务项目包括玉树网站建设、玉树网站制作、玉树网页制作以及玉树网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,玉树网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到玉树省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
在进行代码优化的过程中,方法是非常重要的,多掌握几种方法,根据代码的不同情况选择适合的方法进行优化。
下面电脑培训为大家介绍Java代码优化的几种方法。
1、使用指定类、方法的final修饰符具有final修饰符的类不可派生。
在Java核心API中,有许多最终应用程序的例子,例如java.lang.String,整个类都是final。
为类指定final修饰符允许继承类,并且为方法指定final修饰符允许覆盖该方法。
如果将类指定为final,IT培训认为该类的所有方法都是final。
Java编译器将寻找内联所有最终方法的机会。
内联对于提高Java操作的效率非常重要。
这可以将性能平均提高50%。
2、重用对象String对象的使用是非常重要的,StringBuilder/StringBuffer并不是字符串连接。
由于Java虚拟机需要时间来生成对象,所以将来垃圾收集和处理这些对象可能需要一些时间。
因此,生成太多对象将对程序的性能产生很大影响。
3、使用局部变量调用方法时传递的参数以及在调用中创建的临时变量都保存在堆栈中,速度更快。
其他变量(如静态变量和实例变量)在堆中创建并且速度较慢。
此外,洛阳北大青鸟发现在堆栈中创建的变量,当方法完成运行时,内容消失,不需要进行额外的垃圾收集。
4、及时关闭流在Java编程过程中,在执行数据库连接和I/O流操作时要小心。
使用后,北大青鸟洛阳嘉荟校区官网建议应及时关闭以释放资源。
因为这些大型物体的操作会导致系统的大量开销,稍微粗心会导致严重的后果。
大多数Java开发人员都认为性能优化是复杂的,需要大量的经验和知识。
其实这样的说法是有一定的道理的,一般情况下,优化应用程序以获得最好的性能不是一件容易的事。
但这并不意味着如果你没有知识,你什么也做不了,下面西安电脑培训为大家介绍一些易于遵循的调整方法。
1、必要之前不要优化这可能是最重要的性能调整之一。
您将要根据一般的最佳实践来高效地实施用例。
但是,这并不意味着在需要之前,必须更换标准库或进行复杂的优化。
在大多数情况下,过早的优化不仅占用大量的时间,而且不易读取代码,还可以进行维护。
更糟糕的是,西安IT培训发现这些优化通常不能带来任何好处,而你花费大量时间进行优化是应用程序的一个非关键部分。
2、为应用程序创建性能这是另一种常用技术,可帮助您避免在生产后发生的许多意外问题。
西安IT培训认为整个应用程序的性能测试,必须始终定义套件并在性能提高之前和之后运行。
3、处理最大的瓶颈创建测试套件并使用分析器分析应用程序后,您可以列出需要解决的问题,保证提高性能。
这样非常好,但我还没有回答你应该从哪里开始的问题。
北大青鸟建议您可以专注于速效系统,或从最重要的问题开始。
要想对Java应用代码进行优化,我们首先需要分析其具体工作原理。
事实上,影响性能优化效果的因素多种多样,我们需要从垃圾回收、操作系统设置以及虚拟机制等多个角度着眼,方可顺利完成任务。
在今天的文章中,郑州IT培训将分享五项性能优化技巧,希望能为你的Java应用提升工作带来启示。
1.从最小Heap分配入手2.使用各类Java性能工具3.使用StringBuilder而非+运算符4.避免使用迭代器5.建立更好的并发控制机制
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 JAVA程序设计中一个普遍的问题就是没有好好的利用JAVA语言本身提供的函数,从而常常会生成大量的对象(或实例)。由于系统不仅要花时间生成对象,以后可能还需花时间对这些对象进行垃圾回收和处理。因此,生成过多的对象将会给程序的性能带来很大的影响。 例1:关于String,StringBuffer,+和append JAVA语言提供了对于String类型变量的操作。但如果使用不当,会给程序的性能带来影响。如下面的语句: Stringname=newString("HuangWeiFeng");System.out.println(name+"ismyname"); 看似已经很精简了,其实并非如此。为了生成二进制的代码,要进行如下的步骤和操作: (1)生成新的字符串newString(STR_1);(2)复制该字符串; (3)加载字符串常量"HuangWeiFeng"(STR_2);(4)调用字符串的构架器(Constructor);(5)保存该字符串到数组中(从位置0开始); (6)从java.io.PrintStream类中得到静态的out变量; (7)生成新的字符串缓冲变量newStringBuffer(STR_BUF_1);(8)复制该字符串缓冲变量; (9)调用字符串缓冲的构架器(Constructor);(10)保存该字符串缓冲到数组中(从位置1开始); (11)以STR_1为参数,调用字符串缓冲(StringBuffer)类中的append方法;(12)加载字符串常量"ismyname"(STR_3); (13)以STR_3为参数,调用字符串缓冲(StringBuffer)类中的append方法;(14)对于STR_BUF_1执行toString命令; (15)调用out变量中的println方法,输出结果。 由此可以看出,这两行简单的代码,就生成了STR_1,STR_2,STR_3,STR_4和STR_BUF_1五个对象变量。这些生成的类的实例一般都存放在堆中。堆要对所有类的超类,类的实例进行初始化,同时还要调用类极其每个超类的构架器。而这些操作都是非常消耗系统资源的。因此,对对象的生成进行限制,是完全有必要的。 经修改,上面的代码可以用如下的代码来替换。 StringBuffername=newStringBuffer("HuangWeiFeng"); System.out.println(name.append("ismyname.").toString()); 系统将进行如下的操作: (1)生成新的字符串缓冲变量newStringBuffer(STR_BUF_1);(2)复制该字符串缓冲变量; (3)加载字符串常量"HuangWeiFeng"(STR_1);(4)调用字符串缓冲的构架器(Constructor);(5)保存该字符串缓冲到数组中(从位置1开始); (6)从java.io.PrintStream类中得到静态的out变量;(7)加载STR_BUF_1; (8)加载字符串常量"ismyname"(STR_2); (9)以STR_2为参数,调用字符串缓冲(StringBuffer)实例中的append方法;(10)对于STR_BUF_1执行toString命令(STR_3);(11)调用out变量中的println方法,输出结果。 由此可以看出,经过改进后的代码只生成了四个对象变量:STR_1,STR_2,STR_3和STR_BUF_1.你可能觉得少生成一个对象不会对程序的性能有很大的提高。但下面的代码段2的执行速度将是代码段1的2倍。因为代码段1生成了八个对象,而代码段2只生成了四个对象。 代码段1: Stringname=newStringBuffer("HuangWeiFeng");name+="ismy";name+="name"; 代码段2: StringBuffername=newStringBuffer("HuangWeiFeng");name.append("ismy"); name.append("name.").toString(); 因此,充分的利用JAVA提供的库函数来优化程序,对提高JAVA程序的性能时非常重要的.其注意点主要有如下几方面; (1)尽可能的使用静态变量(StaticClassVariables)
如果类中的变量不会随他的实例而变化,就可以定义为静态变量,从而使他所有的实例都共享这个变量。 例: publicclassfoo{ SomeObjectso=newSomeObject();} 就可以定义为:publicclassfoo{ staticSomeObjectso=newSomeObject();} (2)不要对已生成的对象作过多的改变。 对于一些类(如:String类)来讲,宁愿在重新生成一个新的对象实例,而不应该修改已经生成的对象实例。例: Stringname="Huang";name="Wei";name="Feng"; 上述代码生成了三个String类型的对象实例。而前两个马上就需要系统进行垃圾回收处理。如果要对字符串进行连接的操作,性能将得更差,因为系统将不得为此生成更多得临时变量,如上例1所示。 (3)生成对象时,要分配给它合理的空间和大小JAVA中的很多类都有它的默认的空间分配大小。对于StringBuffer类来讲,默认的分配空间大小是16个字符。如果在程序中使用StringBuffer的空间大小不是16个字符,那么就必须进行正确的初始化。 (4)避免生成不太使用或生命周期短的对象或变量。对于这种情况,因该定义一个对象缓冲池。以为管理一个对象缓冲池的开销要比频繁的生成和回收对象的开销小的多。 (5)只在对象作用范围内进行初始化。JAVA允许在代码的任何地方定义和初始化对象。这样,就可以只在对象作用的范围内进行初始化。从而节约系统的开销
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流