ArcGIS Server Java ADF 案例教程 42
2009-09-04 14:30
225 查看
二 使用Utility Objects提高查询性能【案例】
这是我的同事使用Utility Objects解决某个用户的一个实际问题。这个用户通过调用AO进行空间查询,然后在此基础上进行分页,分页的时候遍历该页所有的IFeature,提取属性信息,构造成自己的结果返回——结果,遇到了严重的性能问题,在上万条记录中查询一般两三分钟才可以出结果,这在一个国家级项目中是难以忍受的。
经过添加日志分析,发现AO查询的速度非常快,问题就是出在遍历IFeature这个操作上,是不停地进行跨进程调用产生的。就在这个时候9.3.1正式发布了,Utility Objects有如救星般地降临了!
由于在上一小节关于怎么定义Utility Object已经讲得比较清楚,这里就不在啰嗦怎么封装接口和实现类了。下面是封装起来的功能代码,主要就是遍历分页要素并提取有用的信息,当然,原先这部分代码是在Web层执行的。
IFeature feature = featureCursor.nextFeature();
int
featureCount = 0;
while
(feature != null
)
{
if
(featureCount >= first + pageSize)
{
break
;
}
if
(featureCount >= first)
{
result.add(ServiceUtil.feature2Einfo(feature));
}
featureCount++;
feature = featureCursor.nextFeature();
}
经过这样的处理,性能有了极大的提升,一个简单的测试可以说明情况:这里做了一个半径1000公里的空间查询,返回结果总数为30437条。
如果你有细粒度的操作,又遇到了性能问题,现在是不是很心动?
这是我的同事使用Utility Objects解决某个用户的一个实际问题。这个用户通过调用AO进行空间查询,然后在此基础上进行分页,分页的时候遍历该页所有的IFeature,提取属性信息,构造成自己的结果返回——结果,遇到了严重的性能问题,在上万条记录中查询一般两三分钟才可以出结果,这在一个国家级项目中是难以忍受的。
经过添加日志分析,发现AO查询的速度非常快,问题就是出在遍历IFeature这个操作上,是不停地进行跨进程调用产生的。就在这个时候9.3.1正式发布了,Utility Objects有如救星般地降临了!
由于在上一小节关于怎么定义Utility Object已经讲得比较清楚,这里就不在啰嗦怎么封装接口和实现类了。下面是封装起来的功能代码,主要就是遍历分页要素并提取有用的信息,当然,原先这部分代码是在Web层执行的。
IFeature feature = featureCursor.nextFeature();
int
featureCount = 0;
while
(feature != null
)
{
if
(featureCount >= first + pageSize)
{
break
;
}
if
(featureCount >= first)
{
result.add(ServiceUtil.feature2Einfo(feature));
}
featureCount++;
feature = featureCursor.nextFeature();
}
经过这样的处理,性能有了极大的提升,一个简单的测试可以说明情况:这里做了一个半径1000公里的空间查询,返回结果总数为30437条。
分页起始记录 | 分页记录数 | 优化前(s) | 优化后(s) |
0 | 500 | 179.406 | 5.203 |
相关文章推荐
- ArcGIS Server Java ADF 案例教程 34
- ArcGIS Server Java ADF 案例教程 33
- ArcGIS Server Java ADF 案例教程 16
- ArcGIS Server Java ADF 案例教程 9
- 转ArcGIS Server Java ADF 案例教程
- ArcGIS Server Java ADF 案例教程 4
- ArcGIS Server Java ADF 案例教程 35
- ArcGIS Server Java ADF 案例教程 13
- ArcGIS Server Java ADF 案例教程 17
- ArcGIS Server Java ADF 案例教程 40
- ArcGIS Server Java ADF 案例教程 10
- ArcGIS Server Java ADF 案例教程 12
- ArcGIS Server Java ADF 案例教程 7
- ArcGIS Server Java ADF 案例教程 43
- ArcGIS Server Java ADF 案例教程 38
- ArcGIS Server Java ADF 案例教程 19
- ArcGIS Server Java ADF 案例教程 3
- ArcGIS Server Java ADF 案例教程 22
- ArcGIS Server Java ADF 案例教程 25
- ArcGIS Server Java ADF 案例教程 36