java 反射set方法赋值_反射性能研究,反射赋值与set方法赋值对比

本文通过代码测试比较了Java中反射赋值与set方法赋值的性能差异。在一千万次循环中,反射赋值耗时约1秒,而set方法耗时仅为7毫秒。通过优化,使用map缓存Field,反射赋值速度提升至95毫秒,约为set方法的13.5倍。然而,即使是一亿次调用,反射的95毫秒也是可接受的运行速度。结论是,反射在一定次数内可用于代替set方法,但set方法的性能更优,建议尽量使用set方法。
摘要由CSDN通过智能技术生成

可能我们有一个模糊的概念,反射性能会慢,但是有多慢没有一个具体的数据。那我就写代码来测试一下。

packagecom.itbac.reflection;importjava.lang.reflect.Field;public classtest {public static void main(String[] args) throwsNoSuchFieldException, IllegalAccessException {long begin =System.currentTimeMillis();

Book book= newBook();

book.setName("java从入门到放弃");

book.setNum(1);

book.setPrice(1.2);

System.out.println(book.toString());//循环一千万次

for (int i = 0; i < 10000000; i++) {//1.set方法赋值 耗时毫秒:7//book.setNum(++i);//2.反射赋值 耗时毫秒:1045

setFeild(book, i,"num");

}

System.out.println(book.toString());long end =System.currentTimeMillis();

System.out.println("毫秒:"+(end-begin));

}private static void setFeild(Book book, int i,String str) throwsNoSuchFieldException, IllegalAccessException {

Class extend

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值