4

我一直在我的 hadoop 工作中做一些工作,并且能够快速获得对象层次结构之间的 Dozer 映射。我有一些复杂的对象需要转换为 Thrift 类型。当我启用此映射时,它会在我的 5 分钟处理运行(使其为 10 分钟)中增加近 5 分钟的执行时间,并加上或减去一些变化。我正在打印推土机统计数据,它清楚地表明它正在花费 5 分钟进行映射。有什么办法可以加快这个速度吗?定义映射与让它通过反射自动映射有什么好处?

这就是我打印统计数据的方式:

GlobalStatistics stats = GlobalStatistics.getInstance();
for (Statistic stat : stats.getStatsMgr().getStatistics()) {
    for (StatisticEntry entry : stat.getEntries()) {
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }
}

这是输出:

SUPER_TYPE_CHECK: 970293
SUPER TYPE CHECK: 6
MAPPER_INSTANCES_COUNT: 1
MAPPING_SUCCESS_COUNT: 10093
FIELD_MAPPING_SUCCESS_COUNT: 25883488
MAPPING_TIME: 478486

我很好奇的一件事是生成的 Thrift 类具有公共字段以及 getter/setter 方法。我需要返回并使用私有字段以 Bean 样式重新生成它们。推土机会在这些公共领域做额外的工作吗?我怎样才能加快这个映射?我知道开发时间与执行时间之间存在折衷,我总是可以直接实施自己的转换,但我对使用 Dozer 的性能损失有多大感到惊讶。难道我做错了什么?

另外,为什么我看不到任何有关推土机缓存命中率的统计数据?此页面表明应该有更多可用的统计数据:http: //dozer.sourceforge.net/documentation/configuration/statistics.html

4

0 回答 0