2011-01-25 76 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内部触发了这种性能变化。