ArcGIS Server Java ADF 案例教程 42

來源:互聯網
上載者:User
二 使用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條。

分頁起始記錄

分頁記錄數

最佳化前(s)

最佳化後(s)

0

500

179.406

5.203

如果你有細粒度的操作,又遇到了效能問題,現在是不是很心動?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.