Правда. Так оно и есть. Помимо Mid$ и Mid и остальные функции работы со строками имеюют две версии.Space писал(а):Правда ли, что строковые ф-и вроде Mid$ работают быстрее их аналога без $, т.к Mid возвращает Variant, а Mid$ возвращает String?.
В случае, если приходиться работать с Variant.Space писал(а):Зачем Mid возвращать Variant - в каких случаях это необходимо и даже возможно?
Mid может (собственно и возвращает) вернуть Variant, содержащий внутри String. Также может использоваться аргумент типа Variant.Space писал(а):Ведь Mid всегда работает со строкой и возвращает её, и другой тип вернуть не может.
Dim v1 as Variant
v1=mid$(a$,10)
Может, но на преобразование уйдет некоторое время. Одним словом, при работе со строками надо пользоваться $-версиями строковых функций.Space писал(а):а смысл какой? Ведь переменная Variant может принять String
В разы будет разница между Mid и Mid$ для строк. ЕМНИП раза в три где то.Space писал(а):да, несложно. Я думаю, что разница во времени выполнения будет мала.
Viper писал(а):ЕМНИП раза в три где то.
Private Sub Form_Load()
Debug.Print "Test MID"
Debug.Print "________"
Dim T1 As Single
Dim A1 As String
Dim i As Long
Const Sample As String = "svfkbvgsdbfhvbshdfhbv"
Const Iter As Long = 1000000
T1 = Timer
For i = 1 To Iter
A1 = Mid(Sample, 5, 2)
Next
T1 = Timer - T1
Debug.Print "Время Mid : " & T1
T1 = Timer
For i = 1 To Iter
A1 = Mid$(Sample, 5, 2)
Next
T1 = Timer - T1
Debug.Print "Время Mid$: " & T1
End Sub
Test MID
________
Время Mid : 0,42125
Время Mid$: 0,155375
Space писал(а):Наверно, это связано с алгоритмами предугадывания выполнения команд процессором.
Space писал(а):У меня AMD 3200, а у тебя скорее проц от Intel
Аккурат в три раза быстрее.При использовании Mid$ время = 17.54 секунд.
При использовании Mid строк = 53.44 секунд.
Сейчас этот форум просматривают: AhrefsBot и гости: 80