2011-01-25 77 views
2

我們的應用程序中存在一些性能問題,其中Crystal Reports(XI)託管在WCF服務中。在性能分析器的幫助下,我們能夠發現對ReportDocument.Load的調用超過了10秒。如果我們深入挖掘,最有問題的一點是ReportClientDocumentClass.Open-method,它佔用整個10秒。Crystal Reports - ReportDocument.Load性能不佳

我們調用負載方法是這樣的:

dim doc As ReportDocument = New CrystalDecisions.CrystalReports.Engine.ReportDocument 
doc.Load("filename") 

報告文件比服務在同一臺服務器上託管。

的「堆棧跟蹤」爲ReportDocument.Load看起來是這樣的:

ReportDocument.Load 
ReportClientDocumentWrapper.EnsureDocumentIsOpened 
ReportClientDocumentWrapper.Open 
ReportClientDocumentClass.Open 

就像我上面提到的,調用ReportClientDocumentClass.Open是「掛」了一把。任何可能導致這種情況的想法?

回答

2

原來的問題是針對打印機。打開方法的調用嘗試連接到設計報表時使用的打印機。報告部署完成後,打印機不再可用,但Crystal花了15秒左右才注意到這一點。

打開報告並將其設置爲不使用打印機修復此特定性能問題。

0

我注意到一個WCF服務,我剖析了Client > WCF > Service調用具有以下性能特點:沒有運行後

    1. 第一到服務客戶端的新實例調用客戶端1-2分鐘:〜12-15秒;
    2. 關閉客戶端的前一個實例後:〜1.1秒;
    3. 重新啓動Windows後:〜21秒;客戶端的現有實例
  1. 後續調用服務:〜0.1秒

運行與512 MB RAM的Windows 2003 Server SP2。

我不確定WCF內部觸發了這種性能變化。