Crystal Reports 2008: lentezza in fase di load (ancora???)

mercoledì 14 aprile 2010 - 09.57

crystal Profilo | Newbie

Ritorno sull'ormai noto problema di lentezza CR 2008 nella fase di load

Dim rd As ReportDocument rd = New ReportDocument() rd.Load("mio_rpt.rpt")

Le soluzioni vertono tutte verso quelle già citate in questo (ed altri) forum: preloading, thread, etc.
E questo è quello che farò per migliorare le performance.

Tuttavia, prima di gettare la spugna e passare alla soluzione c/s, ho fatto questo programmino di prova:

Imports CrystalDecisions.CrystalReports.Engine Imports com.XXX.XXXfw.dotnet.crr.util.MCRRUtil Public Module MTestReport Public Sub Main() Dim rptname As String Dim path As String Dim rptdoc As ReportDocument Dim starttimeop As DateTime Dim stoptimeop As DateTime Dim durationop As TimeSpan rptdoc = New ReportDocument() Console.WriteLine("Caricamento reports in corso...") path = ExtractPathAndFileName(Application.ExecutablePath)(0) & "\" ' #0 rptname = path & "CR8Sub_XXX_LI.rpt" starttimeop = DateTime.Now rptdoc = New ReportDocument() rptdoc.Load(rptname) stoptimeop = DateTime.Now durationop = stoptimeop - starttimeop Console.WriteLine("#0 " & rptname & " : " & durationop.ToString) rptdoc.Close() ' #1 rptname = path & "BollaEntrata.rpt" starttimeop = DateTime.Now rptdoc.Load(rptname) stoptimeop = DateTime.Now durationop = stoptimeop - starttimeop Console.WriteLine("#1 " & rptname & " : " & durationop.ToString) rptdoc.Close() ' #2 rptname = path & "CR8Sub_XXX_LI.rpt" starttimeop = DateTime.Now 'rptdoc = New ReportDocument() rptdoc.Load(rptname) stoptimeop = DateTime.Now durationop = stoptimeop - starttimeop Console.WriteLine("#2" & rptname & " : " & durationop.ToString) rptdoc.Close() ' #3 rptname = path & "BollaEntrata.rpt" starttimeop = DateTime.Now rptdoc.Load(rptname) stoptimeop = DateTime.Now durationop = stoptimeop - starttimeop Console.WriteLine("#3 " & rptname & " : " & durationop.ToString) rptdoc.Close() ' #4 rptname = path & "Fattura.rpt" starttimeop = DateTime.Now rptdoc = New ReportDocument() rptdoc.Load(rptname) stoptimeop = DateTime.Now durationop = stoptimeop - starttimeop Console.WriteLine("#4 " & rptname & ": " & durationop.ToString) rptdoc.Close() ' #5 rptname = path & "RegressioneFatture.rpt" starttimeop = DateTime.Now rptdoc = New ReportDocument() rptdoc.Load(rptname) stoptimeop = DateTime.Now durationop = stoptimeop - starttimeop Console.WriteLine("#5 " & rptname & " : " & durationop.ToString) rptdoc.Close() ' #6 rptname = path & "Fattura.rpt" starttimeop = DateTime.Now rptdoc = New ReportDocument() rptdoc.Load(rptname) stoptimeop = DateTime.Now durationop = stoptimeop - starttimeop Console.WriteLine("#6 " & rptname & " : " & durationop.ToString) rptdoc.Close() Console.WriteLine(vbCrLf & "Reports caricati") End Sub End Module

Lanciandolo svariate volte ho notato (via task manager/Process Explorer) che, durante l'esecuzione, la cpu occupata è intervallata da momenti di non occupazione della cpu. Questo mi ha fatto pensare che per qualche motivo ci sia "qualcuno" nel mio programma che sta lavorando in background in rete. Ma tutto è in locale (gli rpt citati sono nella stessa directory dell'eseguibile)! Come è possibile?

L'ho lanciato più volte sia con la rete attaccata che staccata (brutalmente isolavo la macchina staccando il cavo di rete). Questo è il risultato:

Con mex del tipo Warning: ORB::BOA_init: hostname lookup returned `localhost' (127.0.0.1/::1) la rete è "staccata". TEST C:\temp\testlentezza>CRR2008ExeOptimizer.exe Caricamento reports in corso... #0 C:\temp\testlentezza\CR8Sub_XXX_LI.rpt : 00:00:01.2500000 #1 C:\temp\testlentezza\BollaEntrata.rpt : 00:00:08.1093750 #2C:\temp\testlentezza\CR8Sub_XXX_LI.rpt : 00:00:00.5625000 #3 C:\temp\testlentezza\BollaEntrata.rpt : 00:00:01.3125000 #4 C:\temp\testlentezza\Fattura.rpt: 00:00:08.8750000 #5 C:\temp\testlentezza\RegressioneFatture.rpt : 00:00:00.6718750 #6 C:\temp\testlentezza\Fattura.rpt : 00:00:01.5937500 Reports caricati C:\temp\testlentezza>CRR2008ExeOptimizer.exe Caricamento reports in corso... #0 C:\temp\testlentezza\CR8Sub_XXX_LI.rpt : 00:00:01.2812500 #1 C:\temp\testlentezza\BollaEntrata.rpt : 00:00:05.8125000 #2C:\temp\testlentezza\CR8Sub_XXX_LI.rpt : 00:00:00.5468750 #3 C:\temp\testlentezza\BollaEntrata.rpt : 00:00:01.3437500 #4 C:\temp\testlentezza\Fattura.rpt: 00:00:06.1250000 #5 C:\temp\testlentezza\RegressioneFatture.rpt : 00:00:00.6250000 #6 C:\temp\testlentezza\Fattura.rpt : 00:00:01.5468750 Reports caricati C:\temp\testlentezza>CRR2008ExeOptimizer.exe Caricamento reports in corso... Warning: ORB::BOA_init: hostname lookup returned `localhost' (127.0.0.1/::1) Use the -OAhost option to select some other hostname #0 C:\temp\testlentezza\CR8Sub_XXX_LI.rpt : 00:00:02.8906250 #1 C:\temp\testlentezza\BollaEntrata.rpt : 00:00:01.4218750 #2C:\temp\testlentezza\CR8Sub_XXX_LI.rpt : 00:00:00.5468750 #3 C:\temp\testlentezza\BollaEntrata.rpt : 00:00:01.3125000 #4 C:\temp\testlentezza\Fattura.rpt: 00:00:01.6093750 #5 C:\temp\testlentezza\RegressioneFatture.rpt : 00:00:00.6562500 #6 C:\temp\testlentezza\Fattura.rpt : 00:00:01.5156250 Reports caricati C:\temp\testlentezza>CRR2008ExeOptimizer.exe Caricamento reports in corso... Warning: ORB::BOA_init: hostname lookup returned `localhost' (127.0.0.1/::1) Use the -OAhost option to select some other hostname #0 C:\temp\testlentezza\CR8Sub_XXX_LI.rpt : 00:00:01.2812500 #1 C:\temp\testlentezza\BollaEntrata.rpt : 00:00:01.3593750 #2C:\temp\testlentezza\CR8Sub_XXX_LI.rpt : 00:00:00.5312500 #3 C:\temp\testlentezza\BollaEntrata.rpt : 00:00:01.3437500 #4 C:\temp\testlentezza\Fattura.rpt: 00:00:01.5625000 #5 C:\temp\testlentezza\RegressioneFatture.rpt : 00:00:00.6562500 #6 C:\temp\testlentezza\Fattura.rpt : 00:00:01.5468750 Reports caricati C:\temp\testlentezza>CRR2008ExeOptimizer.exe Caricamento reports in corso... #0 C:\temp\testlentezza\CR8Sub_XXX_LI.rpt : 00:00:01.5625000 #1 C:\temp\testlentezza\BollaEntrata.rpt : 00:00:08.5781250 #2C:\temp\testlentezza\CR8Sub_XXX_LI.rpt : 00:00:00.5468750 #3 C:\temp\testlentezza\BollaEntrata.rpt : 00:00:01.2968750 #4 C:\temp\testlentezza\Fattura.rpt: 00:00:08.8593750 #5 C:\temp\testlentezza\RegressioneFatture.rpt : 00:00:00.6718750 #6 C:\temp\testlentezza\Fattura.rpt : 00:00:01.6093750 Reports caricati C:\temp\testlentezza>CRR2008ExeOptimizer.exe Caricamento reports in corso... #0 C:\temp\testlentezza\CR8Sub_XXX_LI.rpt : 00:00:01.3750000 #1 C:\temp\testlentezza\BollaEntrata.rpt : 00:00:08.1250000 #2C:\temp\testlentezza\CR8Sub_XXX_LI.rpt : 00:00:00.5781250 #3 C:\temp\testlentezza\BollaEntrata.rpt : 00:00:01.3906250 #4 C:\temp\testlentezza\Fattura.rpt: 00:00:08.8750000 #5 C:\temp\testlentezza\RegressioneFatture.rpt : 00:00:00.6875000 #6 C:\temp\testlentezza\Fattura.rpt : 00:00:01.5781250 Reports caricati C:\temp\testlentezza>

Le performance in fase di load, con rete "staccata" sono decisamente migliori.
Che cosa vuol dire? Che cosa ho fatto? C'è qualche cosa che .NET sta andando a cercare per verificare qualche libreria di Crystal (o viceversa)?
Oppure: ho sbagliato tutto? sono fuori strada?

Citando Jhon Lennon (The Beatles): won't you please, please help me?

Ciao.

marcomorgia Profilo | Newbie

Ciao,

allora anche io ho il tuo stesso problema. Solo che a me solo la prima stampa è lenta, utilizzando un metodo simile al tuo però sono riuscito a velocizzare il tutto, però sinceramente vorrei cercare qualche altra soluzione.

Cmq ho cercato un pò su internet e ho trovato in effetti che quando si lancia crystal report contatta un server e cerca un componente crl.verisign.net

http://bonkel.wordpress.com/2008/11/18/crystal-reports-slow-load-using-net-c-setdatasource/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5