ecache缓存比直接用反射更慢,求解?

我看见佛 2018-06-10 08:55:32

getXfColumnByClass运行时间:22ms
getXfColumnByCache运行时间:16660ms

不是说用缓存代替反射吗?为什么我用缓存后更慢了哇?
...全文
14464 点赞 收藏 28
写回复
28 条回复
shrek11 03月16日
这还要想吗 一个跨了进程 一个没
回复 点赞
沉思有倾 2020年10月28日
个人认为缓存和反射可以说是不相关的模块。 所谓的缓存实现反射无非两种: 1 将反设可以前置的动作都缓存起来,要反射时从缓存里拿,拿来直接反射 2 数据存缓存里,不用再通过发射获取了
回复 点赞
LQW_home 2020年07月09日
最重要的是spring cache 依赖spring容器 你起容器了吗
回复 点赞
LQW_home 2020年07月09日
你这根本就没用到缓存 因为第一次访问
回复 点赞
何为岸 2020年07月01日
你这个方法走了aop了吧 你aop里面干了啥 谁知道啊
回复 点赞
冰思雨 2020年06月08日
楼主啊, 数据缓存 和 反射,是两个概念的。 反射的主要功能是加载和分析类信息,之后可以调用构造器创建对象,调用对象的方法等等。 数据缓存的主要功能是提高数据访问的效率。 反射的过程中,唯一涉及到数据访问的地方,应该就是类加载的时候,和创建对象的时候了吧。 总觉得两者没有可比性啊。 还有啊,Java中的 ClassLoader 对象,是有内置缓存的,一旦加载过某个类之后,再次调用loadClass方法(或相关的方法),是不会产生IO操作的。 我们都知道,程序中有IO访问,会造成线程等待,从而使整体速度变慢。 ehcache 有几种模式的吧。如果是嵌入式使用的话,效率应该是最高的。如果你将ehcache单独启动或者还弄成分布式的缓存,那么,访问ehcache会造成IO操作,从而使整体速度有所降低。
回复 点赞
wongji 2020年05月21日
下载还需要分数。我是零分咋办
回复 点赞
hzldds2019 2020年04月20日
感觉使用姿势有问题
回复 点赞
既...来... 2020年01月09日
不错!不错!
回复 点赞
zigua234 2019年11月15日
学习下111111111111
回复 点赞
我看见佛 2019年08月28日
引用 16 楼 像忘了谁sq 的回复:
兄弟,你缓存类干啥?缓存一般都是缓存一些经常调用的数据吧
只是测试对比了解下
回复 点赞
我看见佛 2019年08月28日
引用 15 楼 夕目山 的回复:
窥视中。。。
只是测试对比了解下
回复 点赞
我看见佛 2019年08月28日
引用 17 楼 baichangda234 的回复:
现在jdk同一种类、方法、字段反射一次以后,已经默认帮你缓存了
好像听说也是,Jdk进行优化过了
回复 点赞
baichangda234 2019年08月12日
现在jdk同一种类、方法、字段反射一次以后,已经默认帮你缓存了
回复 点赞
像忘了谁sq 2019年07月26日
兄弟,你缓存类干啥?缓存一般都是缓存一些经常调用的数据吧
回复 点赞
bigkai12138 2019年05月18日
窥视中。。。
回复 点赞
JosephYaJo 2019年05月17日
1. 反射前几次调用, 是使用了Native实现的性能相对较差, 但是当调用次数到了一定的阀值后, 会自动生产字节码类, 进行JIT优化,就和普通调用一样了,所以循环中执行的就是普通调用 2. ecache框架中有许多逻辑代码和校验代码,和普通调用,你觉得哪个比较快?
回复 点赞
VictorJon 2019年01月16日
回复 点赞
赵举飞 2018年12月20日
要知道你的循环次数得有多少,这个次数,缓存已经很快了。 再者就是你的例子,缓存先是反序列化,然后看看你方法里还有没有其他的操作? 两个例子其他的操作是否一致?对照试验最重要的是保证一个量不同,其他的量完全相同,否则就不科学。 即便其他因素都没问题,还要考虑你的class的复杂性对反序列化和发射的影响,性能曲线会有交叉也说不定。 这个问题你研究深了,需要考虑的东西很多。
回复 点赞
御灵龍 2018年12月19日
反射机制:能够获取自身的属性和方法。
优点:能够动态创建和获取对象,实现解耦合
缺点:对性能有一定的影响。与直接操作某条数据想比,要慢一些。
在来说缓存,以查询数据库为例,当第一次查询的时候, 会执行sql语句,当第二次查询的之后,会直接读取缓存,不在操作数据库。

所以使用缓存要比使反射快。
只不过你写的程序是在操作文件吗?你用两者查询数据库试试。
回复 点赞
发动态
发帖子
Java EE
创建于2007-09-28

3.7w+

社区成员

22.5w+

社区内容

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区公告
暂无公告