Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419

    Differenza prestazioni versione 1.1 vs 2.0

    Tempo indietro ho sviluppato un'applicazione che calcola degli interessi in modo particolare.
    Questa applicazione non ha nulla di complesso se non le regole di calcolo ed il fatto che esegue una miriade di calcoli.
    L'ho provata con il framework 2.0 e ho notato che sullo stesso pc(il mio) ci mette quasi il triplo di tempo ad eseguire lo stesso calcolo nella stessa identica situazione(stessi programmi in esecuzione ecc.).
    Questa prova l'ho fatta con la versione 1.1 e poi ho cambiato in IIS la versione da utilizzare.
    C'è qualcuno che ha notato una cosa del genere?
    Ho fatto diverse programmi con net 2.0 ma non avevo mai provato un confronto di questo tipo.
    Nella situazione sopracitata è più evidente perchè con le impostazioni di calcolo che ho usato, il programma con la vers.1.1 ci mette più di un secondo(tre secondi e passa con la 2.0 VVoVe: ).
    Commenti ed impressioni sono ben graditi, questa cosa mi intristisce parecchio.

    Ciao e grazie.
    Legnetto

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Non ho provato ancora a mettere alla prova fw2 con calcoli complessi.

    Però ho trovato anch'io cose che intristiscono parecchio.

    Ho notato che le pagine che contengono validatori, con IE6 sono assai più lente del Framework 1.1. In pratica, quando si fa il submit, tutti i controlli DENTRO il form vengono ridisegnati con un evidente, noioso, e fastidiosissimo sfarfallio.
    Ripeto che il difetto non si verifica con Firefox ed Opera, ma solo con IE

    La cosa è talmente triste e ho deciso che per adesso non userò ancora la versione 2.

    Inoltre non mi sembra che i miglioramenti compensino i notevoli peggioramenti

    Pietro

  3. #3
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Caro Pietro, questa cosa mi fa pensare proprio male, stamattina ho fatto le prove utilizzando la versione creata con vsnet 2003 e utilizzando il fram. 2.0 ed, ho notato la lentezza.
    Pensando che ci fossero dei miglioramenti, ho modificato i file del programma utilizzando net 2 direttamente, creando i file compilati(anche quelli aspx) per verificare al massimo i miglioramenti di prestazione.
    La tristezza è che i miglioramenti non ci sono stati.
    Il programma in sostanza calcola degli interessi e produce html(con uno stringbuilder) che poi viene passato ad un literal che a lavoro finito diventa una pagina con diverse tabelle.
    In questo caso, stiamo parlando di prestazioni pure perchè non c'è accesso al db, il sistema utilizza l'input dell'utente.
    La situazione è evidente perchè il risultato è una tabella alta 7 o 8 volte il monitor, con dati diversi (calcoli meno lunghi) non si vede la differenza.
    Vorrei sperare che ci fosse qualche opzione che io non conosco che magari manda in pensione lo stringbuilder(che per me era perfetto)e, in questa versione viene mantenuto per retrocompatibilità a scapito delle prestazioni.
    Se non trovo soluzione a questo problema net 2.0 per quanto mi riguarda mi sa che va a finire nel dimenticatoio.
    Uno diventa matto per ottimizzare le applicazioni poi si trova un peggioramento terrificante senza motivo per poter utilizzare dei controlli che risparmiano al programmatore di scrivere 10 righe di codice.
    A questo punto appena ho tempo, cercherò di fare una funzioncina che fa qualche calcolo complesso in modo ripetitivo per verificare le prestazioni nelle due versioni.

    Ciao

    Legnetto

  4. #4
    Un'altra cosa che io trovo disarmante è la pesantezza dell'ambiente di sviluppo cioè VS2005. E' veramente un mattone pauroso
    "La vendetta è un piatto che va gustato freddo"
    Antico proverbio Klingon.
    Lo chiamavano il 'Computer Umano'. Sapeva contare fino a 20 e nudo fino a 21!

  5. #5
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,584
    Originariamente inviato da sndk4ASP
    Un'altra cosa che io trovo disarmante è la pesantezza dell'ambiente di sviluppo cioè VS2005. E' veramente un mattone pauroso
    non è che hanno costriuto il visual studio 2005 con il framework 2.0?
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    sicuramente Legnetto è incappato in qualche perla del nuovo framework

    Io ho provato con un calcolo scemo di numeri primi ho notato una leggera velocità maggiore per la pagina vs2003 (7.1 secondi) contro quella di vs2005 (7.3 secondi)
    non credo che serva ma il test è:

    codice:
            Dim t As New TempoOperazione()
            t.Start()
    
            Dim n% = 100000
            Dim sb As New StringBuilder
            sb.Append("<table>")
            Dim primi(n - 1) As Boolean
            For i As Integer = 2 To n - 1
                primi(i) = True
                For j As Integer = 2 To i - 1
                    If ((i Mod j) = 0) Then
                        primi(i) = False
                        Exit For
                    End If
                Next
                If primi(i) = True Then
                    'PrintLn(i)
                    sb.Append("<tr><td>" & i.ToString() & "</td></tr>")
                End If
            Next
            sb.Append("</table>")
            Me.Literal1.Text = sb.ToString
            t.End()
            PrintLn(t.Secondi)
    in pratica, con un test scemo, costruisco con StringBuilder, una tabella di numeri primi da 2 fino a 100.000.
    Pietro

  7. #7
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Ho provato anch'io ieri sera a fare una comparazione del genere utilizzando all'interno della funzione anche dei calcoli inutili ma le differenze sono minime.
    La difficoltà è che è un programma sterminato sviluppato su diverse pagine che si ricaricano l'un l'altra, trovare il punto critico non è facile.
    Mi viene da pensare che il problema sia inerente a qualche cosa lato client che non funziona allo stesso modo nelle due versioni.

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    una delle cose sicuramente diversa è il javascript per i validatori
    Pietro

  9. #9
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Aggiornamento della situazione.
    Dopo pene indicibili sono riuscito a focalizzare il problema.
    Praticamente nell'unico accesso ai dati che faccio in questa famigerata applicazione, carico al load i dati(i tassi corrispondenti al periodo) in un dataset e poi giorno per giorno devo verificare richiamando una function tutto il periodo che l'utente inserisce.
    Per prendere il valore corretto utilizzo la proprietà rowfilter del dataview.
    Il problema è proprio una diversa efficienza di quest'ultima nella versione 2.0.
    La differenza di performance praticamente inesistente in una applicazione normale, viene chiaramente ingigantita da un richiamo giornaliero per un periodo di 9 anni nella situazione incriminata. Una differenza microscopica moltiplicata per il numero di giorni forma i famosi due secondi....
    Adesso, trovato l'inghippo, devo capire come fare per usare un'altra soluzione più efficiente che mi permetta di avere a disposizione tre colonne popolate ed un filtraggio....
    Prima che qualcuno me lo dica, devo per motivi particolari verificare giornalmente il valore del tasso, non posso farne a meno.

    Ciao e grazie.
    Legnetto

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: forse ti darò un dispiacere.

    Ho provato a simulare la situazione descritta.
    Ho una tabella comuni in Access di 8101 record.
    All'inizio leggo la tabella e la salvo nella session.
    poi costruisco 810 tabelle di 10 record ciascuna utilizzando un DataView filtrando con RowFilter, utilizzando un StringBuilder
    Poi valorizzo un Literal.

    Ebbene, ottengo una media di 17,3 secondi con VS2003 e 16.7 con VS2005
    il codice di prova è:
    codice:
        Private dt As DataTable
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Inserire qui il codice utente necessario per inizializzare la pagina
    
            If Not Me.IsPostBack Then
                dt = Libreria.GetDataTable(StringaConnessioneTest, "SELECT * FROM COMUNI")
                Me.Session.Add("dt", dt)
            Else
                dt = DirectCast(Session("dt"), DataTable)
            End If
        End Sub
    
        Private Sub LinkButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
            Dim o As New TempoOperazione
            o.Start()
    
            Dim NumeroRecord% = dt.Rows.Count
            Dim RecordTabella% = 10
            Dim NumeroTabelle% = NumeroRecord \ RecordTabella
            Dim NumeroElementiUltimaTabella% = NumeroRecord Mod RecordTabella
    
            Dim sb As New StringBuilder
            If NumeroElementiUltimaTabella > 0 Then NumeroTabelle += 1
            For i As Integer = 1 To NumeroTabelle
                Dim dv As DataView = dt.DefaultView()
                Dim inizio% = RecordTabella * i - (RecordTabella - 1)
                Dim fine% = inizio + RecordTabella - 1
    
                dv.RowFilter = String.Format("ID >= {0} AND ID <= {1}", inizio, fine)
                sb.Append("Tabella n° " & i & "
    ")
                sb.Append("<table border=""1"">")
                sb.Append("<tr>")
                sb.Append("<td>ID</td><td>COMUNE</td><td>PROVINCIA</td>")
                sb.Append("</tr>")
                For j As Integer = 0 To dv.Count - 1
                    sb.Append("<tr>")
                    sb.Append(String.Format("<td>{0}</td><td>{1}</td><td>{2}</td>", dv(j)(0), dv(j)(3), dv(j)(5)))
                    sb.Append("</tr>")
                Next
    
    
    
                sb.Append("</table>")
                sb.Append("
    
    ")
            Next
    
            Me.Literal1.Text = sb.ToString
            o.End()
            PrintLn(o.Secondi)
        End Sub
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.