powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / что оптимальнее replace или if-then-else?
13 сообщений из 13, страница 1 из 1
что оптимальнее replace или if-then-else?
    #35752497
M.Juanito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Друзья, подскажите, пожалуйста, есть ли где справочник с данными по скорости работы, тех или иных операторов VB(для оптимизации кода).
в частности интересует какой код будет оптимальнее:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub test()
Dim sTest As String
Dim aTest As Variant

sTest = "aaa.x.ccc"

aTest = Split(sTest, ".")

If aTest( 1 ) = "x" Then
    MsgBox "bbb"
Else
    MsgBox aTest( 1 )
End If
End Sub

или
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub test2()
Dim sTest As String
Dim aTest As Variant

sTest = "aaa.x.ccc"

aTest = Split(Replace(sTest, ".x.", ".bbb."), ".")

MsgBox aTest( 1 )
End Sub

?
...
Рейтинг: 0 / 0
что оптимальнее replace или if-then-else?
    #35752652
FAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполните свой код 100 000 раз и время засеките. И будет вам счастье.
...
Рейтинг: 0 / 0
что оптимальнее replace или if-then-else?
    #35752659
M.Juanito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это я попробую конечно:).
а что насчет справочника какого-нибудь?
...
Рейтинг: 0 / 0
что оптимальнее replace или if-then-else?
    #35752833
M.Juanito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хех.
получается, что второй вариант работает на 5-10% медленнее :(
эх. а так красиво смотрится.
...
Рейтинг: 0 / 0
что оптимальнее replace или if-then-else?
    #35752841
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub test2()
Dim sTest As String
Dim aTest As String

sTest = "aaa.x.ccc"

aTest = Split$(Replace$(sTest, ".x.", ".bbb."), ".")

MsgBox aTest( 1 )
End Sub

вот удивитесь ;)
...
Рейтинг: 0 / 0
что оптимальнее replace или if-then-else?
    #35752859
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
что оптимальнее replace или if-then-else?
    #35752888
M.Juanito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
точно! все время забываю про $ :) спасибо
...
Рейтинг: 0 / 0
что оптимальнее replace или if-then-else?
    #35752905
M.Juanito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,

Split$ не прокатывает, говорит:

Type-declaration character doesn't match declared data type


но даже с одним только Replace$ второй вариант вырвался вперед
...
Рейтинг: 0 / 0
что оптимальнее replace или if-then-else?
    #35752929
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это я погорячился в попыхах =)
...
Рейтинг: 0 / 0
что оптимальнее replace или if-then-else?
    #35753834
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно удивиться обратно :)
Тесты сделаны так, чтобы выполнять одинаковую работу: создать массив, корректируя один его элемент
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Sub Test()
  Dim sTest$, aTest, TestNo&, t#
  Dim s$, s1$, s2$, s3$, i&, j&
  Const N =  100000 
  sTest = "aaa.x.ccc"
  s1 = ".x.": s2 = ".bbb.": s3 = "."
  Debug.Print "====" & Now
  For TestNo =  1  To  2 
    t = Timer
    Select Case TestNo
    Case  1 
      ' 1 место по скорости: 0,203 s; 492 308 op/s
      For i =  1  To N
        aTest = Split(sTest, s3)
        If aTest( 1 ) = "x" Then aTest( 1 ) = "bbb"
        s = aTest( 1 )
      Next
    Case  2 
      ' 2 место по скорости: 0,344 s; 290 909 op/s
      For i =  1  To N
        aTest = Split(Replace$(sTest, s1, s2), s3)
        s = aTest( 1 )
      Next
    End Select
    t = Timer - t: If t =  0  Then t =  0 . 01 
    Debug.Print TestNo & " " & s, Format(t, "0.000") & " s", Format(N / t, "# ##0") & " op/s"
  Next
End Sub
...
Рейтинг: 0 / 0
что оптимальнее replace или if-then-else?
    #35754074
M.Juanito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну да. второй вариант лучше. и мне он больше нравится:)
...
Рейтинг: 0 / 0
что оптимальнее replace или if-then-else?
    #35754668
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M.Juanitoну да. второй вариант лучше. и мне он больше нравится:)
Вопрос как будто был "по скорости работы".
2-й вариант примерно в 1.6 раза медленнее 1-го.
Но зимой 2-й вариант точно лучше, так как процессор греет больше :)
...
Рейтинг: 0 / 0
что оптимальнее replace или if-then-else?
    #35754713
M.Juanito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а. точно. че-то я уже запутался.
спасибо :)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / что оптимальнее replace или if-then-else?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]