搬砖者:为什么程序总是那么慢?它现在到底在干什么?时间都花到哪里去了?
面试官:简单谈谈 Java 程序性能优化?
1.
字符串处理优化,乃优化之源。
研发过程中,String 的 API 用的应该是最多,创建 String 对象,以及字符串分割处理那是常有的事儿。
1.1. 字符串分割,谁更胜一筹?
字符串分割,常用的方式有哪些?哪种方式好一些?
方式一,经常用 String 提供的 split() 方法来满足业务需求。
代码模拟了一些数据,然后程序跑起来,花费大约 3000 多毫秒。
方式二,采用字符串分割的工具类 StringTokenizer。
采用 StringTokenizer 完成 split() 同样的数据分割,花费大约 500 毫秒。
从运行效果, StringTokenizer 其效率高于 split() 方法。所以,在能够使用 StringTokenizer 进行处理的地方,就尽量使用 StringTokenizer 进行字符串分割处理。
另外,平时研发中,需要注意一点,在使用索引访问用 String 的 split() 方法得到的数组时,需做最后一个分隔符后有无内容的检查,否则会有抛异常的风险。
1.2. 字符串拼接,哪种方式更优?
方式一,使用 + 号拼接字符串。
程序跑起来,大约花费 27687 毫秒。