list.size() 方法频繁调用性能测试 优化程序结构,尽量减少方法的重复调用

本文通过代码测试对比了在循环中频繁调用List.size()方法与将其结果存储在变量中的性能差异,发现后者能有效减少性能损耗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        list.size() 方法频繁调用性能测试 优化程序结构,尽量减少方法的重复调用

一、问题描述

        1、如下图,可以理解为频繁调用list.size() 方法的性能问题。(这里)

二、代码测试如下

        1、ListSizeTest 类,如下:

/**
	 * 初始化List的数量
	 */
	int count = 5000000;
	
	/**
	 * description: 频繁调用重复方法
	 * @return void
	 * @version v1.0
	 * @author w
	 * @date 2021年4月25日 上午9:09:07
	 */
	@Test
	public void test() {
		List<String> list = init(count);
		long start = System.currentTimeMillis();
		for (int i = 0; i < list.size(); i++) {
			if(i % 10 == 9) {
				System.out.println(list.get(i));
			}
		}
		System.out.println("频繁调用重复方法耗时 \t"+(System.currentTimeMillis() - start)+" :ms");
	}
	
	/**
	 * description: 不频繁调用重复方法
	 * @return void
	 * @version v1.0
	 * @author w
	 * @date 2021年4月25日 上午9:10:18
	 */
	@Test
	public void test2() {
		List<String> list = init(count);
		long start = System.currentTimeMillis();
		for (int i = 0 , size =list.size(); i < size; i++) {
			if(i % 10 == 9) {
				System.out.println(list.get(i));
			}
		}
		System.out.println("频繁调用重复方法耗时22 \t"+(System.currentTimeMillis() - start)+" :ms");
	}
	
	
	@Test
	public void test3() {
		List<String> list = init(count);
		long start = System.currentTimeMillis();
		int size =list.size();
		for (int i = 0 ; i < size; i++) {
			if(i % 10 == 9) {
				System.out.println(list.get(i));
			}
		}
		System.out.println("频繁调用重复方法耗时33 \t"+(System.currentTimeMillis() - start)+" :ms");
	}

	private List<String> init(int count) {
		ArrayList<String> res = new ArrayList<String>();
		for (int i = 0; i < count ; i++) {
			res.add(i+"");
		}
		return res ;
	}

        2、分别运行 test1-3;耗时如下:1400ms、1368ms、1358ms

三、总结

        1、大量数据情况下,频繁调用 list.szie()方法,会造成一定的性能损耗; 可以将 list.size()方法,赋值到单独变量中,避免频繁调用,以达到提升性能的效果。

        2、使用test3方法,赋值到单独的变量中,效率最高。 int size =list.size();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值