【发布时间】:2013-09-02 17:50:53
【问题描述】:
我想知道是否有人可以提供任何建议。我已经为几个 POJO 编写了一个 Json 反序列化器/序列化器。为了使它们尽可能通用,它们依靠反射来反对 POJO getter/setter 方法等。由于这是对性能的最大影响,我尝试创建一种“ClassUtils”缓存,在检索后存储 Method 对象(我使用 Introspector 获取属性描述符列表,然后获取 get/set方法)
但是,我尝试首先使用 Guava LoadingCache - 虽然它有一些非常好的和有用的功能,但与我创建的自定义缓存相比,它非常慢 - 使用 Guava 缓存序列化 1,000 个对象需要 3.5 秒,并且只有
对于提高 Guava 性能或改进自定义缓存有什么建议吗?我不能像工作一样发布任何代码,但是我自己的自定义缓存基本上是存储 PropertyDescriptors 的 HashMap 的包装器,使用字符串作为键(我需要将键存储为完整的类名加上属性名称,例如“com.company.package.classes.myclass.property”)
【问题讨论】:
-
使用 Jackson,可以选择使用 afterburner 来将反射替换为字节码生成。不幸的是,没有代码就无法调试 Guava。 ConcurrentLinkedHashMap 仍然比 Guava 端口快,但许多功能只是添加到 Guava 中。