`
沉沦的快乐
  • 浏览: 56863 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java常用性能优化方法及耗时对比

    博客分类:
  • Java
阅读更多

字符串操作

1.String.split(seg);的时间是StringUtils.split(str, seg);的1.5倍.

2.String.replaceAll(regex, replacement)的时间是StringUtils.replace(text, searchString, replacement)的1.86倍。

3.如果是单个字符替换StringUtils.replace(text, searchString, replacement)的时间是StringUtils.replaceChars(str, searchChar, replaceChar)的15倍。

4.如果是字符串替换StringUtils.replace(text, searchString, replacement) 是StringUtils.replaceChars(str, searchString, replaceString)1.4倍。

一句话:能不用正则表达式的地方尽量不用,哪怕自己写方法来实现。

5.如果必须到正则匹配,则需要声明为final类型,以便在编译期间就编译好。final Pattern pattern = Pattern.compile(match)。

循环遍历

 对于List循环,如果List的底层实现是ArrayList最好使用for(int i;i<list.size();i++)方法,而不是使用for(Object obj: objList)。因为foreach方法会创建迭代器进行迭代,会损耗一部分性能。但是如果List是LinkedList实现的,并且又要get元素,那么get(i)遍历效率比较低。

log4j打日志时间:

1.输出到console是输出到本地磁盘(无缓存)的1.33倍

2.无缓存输出到本地磁盘是加缓存输出到本地磁盘的1.09倍(根据实际情况buffersize不一样,性能也不一样)

3.输出到本地磁盘(无缓存)+输出到console是输出到本地磁盘(无缓存)的1.48倍。

 

Exception try-catch时间:

注:时间比例视try包围的代码执行时间而定,代码执行时间越长,try catch对整体时间的影响越小。这里只是为证明加catch 与不加catch对性能的影响。

1. 循环执行字符串比较方法StringUtils.equals(Str1, Str2); 加catch是不加catch执行时间的1.16倍。

2.循环执行字符串比较方法rr.equals(Str2),都加catch,抛空指针异常是不抛异常执行时间的7400倍。

结论:加try catch对性能有轻微影响,所以不要滥用try-catch,但是对于有可能抛异常的地方也不要吝于加try-catch。 抛异常与不抛异常对性能影响很大,对于空指针等可以从代码端上fix上的异常一定要及时修复。

 

其他第三方库

1.各种JSON库性能对比,强烈推荐使用fastjson。(下面数据来源于第三方测试)

2.xml解析器性能对比,吐血推荐XStream+Xpp黄金组合。



 
 

  • 大小: 42.1 KB
  • 大小: 92.4 KB
分享到:
评论

相关推荐

    java反射性能测试分析.pdf

    本文将基于一个性能测试案例,探讨Java反射在对象创建、属性设置和获取上的性能表现,并与常用的工具包如Apache Commons BeanUtils进行对比。 首先,测试主要关注三个环节:创建对象、设置属性值(setter)和获取...

    移动App性能评测与优化

    移动App性能评测与优化是移动应用开发领域中的关键环节,特别是在Android平台上,因为用户体验往往取决于应用的响应速度、稳定性及资源消耗。这份PDF文件详细探讨了如何评估和改进移动App的性能,确保其在Android...

    Java高级架构必备知识点

    - **Tomcat性能优化**:调整Tomcat参数,提高性能。 **7.12 性能调优专题-数据库优化** - **MySQL常见优化手段分析及实践**:针对MySQL进行性能调优。 **7.13 高性能容器的使用** - **Nginx使用入门**:了解...

    word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器分词效果评估

    本话题将深入探讨四种常用的Java分词工具:word分词器、ansj分词器、mmseg4j分词器以及ik-analyzer,以及它们在实际应用中的效果评估。 首先,ansj分词器是由李弄潮开发的一款开源分词工具,它具有强大的词典支持和...

    CmpSongCode2.1文本对比.rar

    该软件支持多种文件格式,无论是常见的文本文件(如.txt、.doc、.docx),还是编程人员常用的代码文件(如.java、.cpp、.py),CmpSongCode2.1都能轻松应对。不仅如此,它还能处理大型文件,即使面对数千行甚至上万...

    java使用ArrayList遍历及效率比较实例分析

    在Java编程中,ArrayList是集合框架中常用的动态数组实现,它允许我们以索引的方式访问元素。本篇文章将深入探讨如何使用ArrayList进行遍历,并通过实际案例对比不同遍历方式的效率。 首先,我们来看看四种不同的...

    40种网页常用小技巧

    以上40种网页常用小技巧,涵盖了从基础的页面构建到高级的性能优化,可以帮助开发者构建更加高效、易用、安全的网页。在实际工作中,结合具体项目和需求,灵活运用这些技巧,可以显著提升开发效率和网页质量。

    应用源码之TestListViewItem.zip

    通过“TestListViewItem”的源码学习,可以掌握ListView的基础使用、自定义Item、Adapter的实现、性能优化等核心知识。在实际项目中,开发者可以根据需求灵活运用这些技术,创建出功能丰富且高效的列表界面。同时,...

    多线程模型在 Socket 编程中的应用

    在Socket编程中,多线程模型是一种常用的优化策略,能够提高服务器处理并发请求的能力。 1. **Socket编程简介** - **概念**:Socket编程即通过网络协议进行数据传输的编程,涉及到Server和Client两端,以及TCP和...

    day01_Object类、常用API每日作业卷1

    在ToStringTest示例中,虽然重写了toString方法,但输出结果受`System.out.println`语句的影响,先输出"I ",然后才调用toString方法返回"java ",所以输出"love Ijava"和"me 2I"。 3. String对象的比较: (1) s1...

    基于Java的在线测试系统的设计与实现.zip

    3. 设计合理的数据库表结构,优化查询性能。 4. 异步处理机制(如Spring Task或Quartz)处理耗时任务,如成绩批量计算。 5. 使用Docker进行环境隔离和部署,确保系统一致性。 六、系统测试 1. 单元测试:针对每个...

    数据结构java

    - Java中的字符串是不可变的对象,通过`String`类表示。 - 字符串可以通过`+`进行拼接,也可以通过`charAt()`等方法获取特定位置的字符。 - **数组** - 数组是一种存储同类型元素的数据结构,支持通过索引访问...

    android 线程通信学习

    本教程将深入探讨Android线程通信的基本概念、常用方法以及如何通过Demo来实践这些技术。 一、Android线程基础 Android系统的主要线程被称为“主线程”或“UI线程”,负责处理用户界面的交互事件,如触摸事件、...

    基于JSP分页技术的研究

    另一种常用的分页技术是将查询结果存储在`HttpSession`或状态bean中,以便后续翻页时直接从缓存中读取数据。这种方式减少了数据库连接的次数,节约了资源。然而,它也有两个明显的缺点:首先,由于数据缓存,用户...

    华为公有云Cloud Services 中级考试.pdf

    23. 在IoT行业中,当设备数据传输量小且定时发送时,适合采用低功耗广域网络(LPWAN)技术,如NB-IoT或LoRa等,以优化资源利用。 这些知识点涵盖了云服务的基础概念、设计原则、服务类型以及在实际应用中的优势和...

    Sun JDK 1.6内存管理--调优篇-毕玄

    《Sun JDK 1.6内存管理—调优篇》由毕玄撰写,旨在深入探讨Java虚拟机(JVM)在Sun JDK 1.6版本下的内存管理与优化策略。本文将详细解读该文中的核心知识点,包括GC调优的基本技巧、编写对GC友好的代码方法,以及...

Global site tag (gtag.js) - Google Analytics