3.939 messaggi dal 28 gennaio 2003
Ho due procedure ricorsive che trovano il value di un radiobutton selezionato.

Ho voluto provare l'efficienza delle due.
Perciò ho richiamato le procedure con un ciclo e, con Stopwatch ho trovato il tempo impiegato.

La seconda procedura è più lenta della prima di circa il 25%

Quello che mi chiedo (e quello che chiedo agli amici del forum) è il motivo.

procedura 1
    Public Function getValueRadioSelected(control As Control, groupName As String) As String
        If TypeOf control Is RadioButton Then
            Dim rb As RadioButton = DirectCast(control, RadioButton)
            Dim nome As String = rb.GroupName
            If nome = groupName Then
                If rb.Checked Then
                    Return rb.Attributes("value")
                End If
            End If
        End If

        For Each c As Control In control.Controls
            Dim result As String = getValueRadioSelected(c, groupName)
            If result <> "" Then Return result
        Next
        Return ""
    End Function


procedura 2
    Public Function getValueRadioSelected1(control As Control, groupName As String) As String
        Dim result As String = ""
        For Each c As Control In control.Controls
            If TypeOf c Is RadioButton Then
                Dim rb As RadioButton = DirectCast(c, RadioButton)
                If ((rb.GroupName = groupName) AndAlso rb.Checked) Then
                    result = rb.Attributes("value")
                    Return result
                End If
            End If
            If (result = "") Then
                result = getValueRadioSelected1(c, groupName)
            End If
        Next

        Return result
    End Function
probabilmente perché fai più cicli di quanti ne servano.
btw, io avrei usato LINQ, probabilmente non è più veloce (sarebbe da testarlo), ma di sicuro ci metti meno a scrivere il codice.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
3.939 messaggi dal 28 gennaio 2003
 Avresti usato linq come?
3.939 messaggi dal 28 gennaio 2003
Perfetto! Ti ringrazio.

Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.