Операторы сравнения If...Then и Select...Case для переменных типа String
=================================================
Во всех случаях, независимо от типа переменной, Dim S As String * 4
Во всех случаях использован "пустой" Gosub...Return
If S = "1" Then Gosub... 71 такт
If S <> "1" Then Gosub... 73 такта
If S > "1" Then Gosub... 75 тактов
If S < "1" Then Gosub... 73 такта
If S = "12" Then Gosub... 95 тактов
If S <> "12" Then Gosub... 97 тактов
If S > "12" Then Gosub... 99 тактов
If S < "12" Then Gosub... 97 тактов
На каждый последующий символ в переменной ("123", "1234" и т.д.) добавляется 24 такта.
Дальше даже копаться не стал - тенденция очевидна.
=================================================
Select Case S результат - True
Case "1" : Gosub... 71 такт
End Select
Select Case S результат - False
Case "2" : Gosub... 47 тактов
End Select
Select Case S результат - True
Case "12" : Gosub... 95 тактов
End Select
Select Case S результат - False
Case "21" : Gosub... 65 тактов
End Select
На каждый последующий символ в переменной ("123", "1234" и т.д.) при результате True добавляется 24 такта.
Что занятно, но при увеличении количества символов более 2-х при результате False выполнение ускоряется - используется уже 47 тактов, а не 65.
Изначально подумал, это связано с тем, что использовались разные очередности символов - "12" и "21" и при различии уже в первом символе результат сравнения будет False, но пробы показали, что "12" или "123" ситуацию не меняют.
Отредактировано Nord (2021-09-13 20:06:54)