У меня есть неэффективная функция VB6 для чтения целых чисел дополнения 2.Улучшение производительности чтения 2-х целых чисел
Private Function Mantis(ByVal HiByte As Byte, ByVal LoByte As Byte, ByVal Range As Single) As Single
Dim bSam As Integer
Dim Bits(15) As Boolean
bSam = (HiByte And &H7F) * &H100 Or LoByte Or (HiByte \ &H80) * &H8000
Bits(15) = bSam And 32768
If Bits(15) Then
If bSam = -32768 Then
bSam = 0
Else
bSam = bSam * -1
End If
End If
Dim I As Integer
For I = 0 To 14
Bits(I) = bSam And (2^I)
Next
Dim bOut As Long
If Bits(2) Then bOut = bOut + 5
If Bits(3) Then bOut = bOut + 10
If Bits(4) Then bOut = bOut + 20
If Bits(5) Then bOut = bOut + 39
If Bits(6) Then bOut = bOut + 78
If Bits(7) Then bOut = bOut + 156
If Bits(8) Then bOut = bOut + 313
If Bits(9) Then bOut = bOut + 625
If Bits(10) Then bOut = bOut + 1250
If Bits(11) Then bOut = bOut + 2500
If Bits(12) Then bOut = bOut + 5000
If Bits(13) Then bOut = bOut + 10000
If Bits(14) Then bOut = bOut + 20000
If Bits(15) Then bOut = bOut * -1
Mantis = bOut * Range
End Function
Как я могу улучшить его производительность? Я думаю, что его можно заменить на некоторые memcpy
или другие вызовы API, но я не знаю, какой из них. Потому что сейчас он должен проверять каждый отдельный бит.