Hurtigeste måde at opbevare objekter i hukommelsen
Hej eksperter.Jeg er igang med at lave et udpsocket program der skal være hurtigt, og udviklet til .Net CLR.
det største problem er nok at programmet skal modtage mellem 50-600 pakker i minuttet.
alle pakkerne har en pakketype fra et nummer mellem 0 til 722, som det er lige nu, bliver alle pakkerne lagt i en type pakke objekt.
men jeg bliver nok nød til at lave nogen extendet pakker, der kan indeholde ydereligere information.
f.eks pakke type nummer 152 (EventCall)
kan være formateret på flere måder efter hvad eventet skal fortælle.
eks 1:
END CALL:0001 (ffffffff)
eks 2:
CREATE CALL:0001 (ffffffff)
eks 3:
0.01022.0 -1 BaseEP: NEW CMEndpoint f1f1f1f1 TOTAL NOW=1 CALL_LIST=0
eks 4:
0.01022.0 -1 BaseEP: DELETE CMEndpoint f1f1f1f1 TOTAL NOW=0 CALL_LIST=0
Jeg har overvejet nogen måder at finde ud af hvad typer der er hvad, siden jeg har mange pakker der opføre sig sådan, og tit i mere komplekse udfoldelser.
siden jeg har modtaget strengene som pakker, har jeg jo selvfølgelig pakkenerne som et byte array.
så jeg tænkte om det var hurtigere at lave ascii karakter tjek på mit byte array, end at bruge regex?
Jeg har lavet et eksempel for hvad jeg mener, med en af mine pakker.
443: Digit Pressed 0
Public Shared Function isDigitPressed(bytes() As Byte) As Boolean
'Er dette en informationspakke nummer 501
'10 = 1
'11 = 245
'Tekst Starter på punkt 32 til slut
'32,x = x
If bytes(10) = 1 And bytes(11) = 245 Then
Dim valid As Boolean = False
For i As Integer = 32 To bytes.Length - 1
If bytes(i) > 47 And bytes(i) < 58 Then
valid = True
ElseIf bytes(i) = 58 Then
Exit For
Else
valid = False
Exit For
End If
Next
Return valid
End If
Return False
End Function
Personligt kender jeg ikke meget til hvordan vb.net behandler arrays, og jeg har mindre kendskab til regex methoderne, om de er hurtigere