Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как лучше передавать аргументы в функцию или процедуру — ссылкой (ByRef) или значением (ByVal)?, ByRef or ByVal?
 
Jack Famous, хорошо, вопросов нету! Верните пожалуйста тогда мой комментарий, а то непонятно о чём речь!
Быстрое определения вхождения символа в список, Fast method to Define symbol by List
 
Jack Famous, подскажите пожалуйста! И я не говорила, что я не могу не ошибаться!
Быстрое определения вхождения символа в список, Fast method to Define symbol by List
 
Jack Famous, предлагаю такой вариант (с использованием Replace)! И дополнительный код не нужен!
Код
Private Sub Test_String_DelLR()
    Dim aL() As Byte, aR() As Byte
    Dim s$, s2$, sList$, t!, n&, Rev_sList$
    
    sList$ = ".,/|\:-"
    
    s = "sdgfsgsdfsdfsdfsdfsdf"
    s = sList & s & StrReverse(sList)
    
    t = Timer
        String_UniList_ToArr1D_ExistsInFull aL, sList: aR = aL
    Debug.Print Format$(Timer - t, "0.00"), "Create Arrays for AscW method" ' 0.00
    
    Rev_sList = StrReverse(sList)
    
    t = Timer
        For n = 1 To 1000000
            'String_DelLR_InStr s, s2, sList, sList, True, True                              ' 2.4
            'String_DelLR_AscW s, s2, aL, aR, True, True                                     ' 0.8
            's2 = Replace(s, sList, vbNullString): s2 = Replace(s2, Rev_sList, vbNullString) ' 0.7
        Next n
    Debug.Print Format$(Timer - t, "0.0"), s2
End Sub

Но опять же все способы нужно тестировать на конкретных данных и результаты производительности могут отличаться!

Цитата
написал:
я считаю вариант на InStr самым быстрым
По тестам же AscW выигрывает! Или есть какой-то нюанс?
Как лучше передавать аргументы в функцию или процедуру — ссылкой (ByRef) или значением (ByVal)?, ByRef or ByVal?
 
БМВ, хорошо, Вас поняла и Бот не использовала Я.
Тогда вопрос такой! Я привела аргументы в пользу того, что ориентироваться на производительность кода не нужно! Всё зависит от обрабатываемых данных! В чём проблема тогда того комментария? Jack Famous, может же аргументировать, если я не права!
Как лучше передавать аргументы в функцию или процедуру — ссылкой (ByRef) или значением (ByVal)?, ByRef or ByVal?
 
Это троллинг, типо я бот ChatGPT... Я так понимаю Мы неправильно поняли друг друга! Подскажите пожалуйста, я только зарегистрировалась на данном форуме! Я так понимаю комментировать и обсуждать статьи я пока не могу? Я серьёзно без шуток, у Вам такая политика?
Как лучше передавать аргументы в функцию или процедуру — ссылкой (ByRef) или значением (ByVal)?, ByRef or ByVal?
 
Цитата
написал:
и именно по этому много воды и мало толка.
А аргументы...? Или у Вас принято только мнениями обмениваться (без негатива)?
Быстрое определения вхождения символа в список, Fast method to Define symbol by List
 
Цитата
написал:
Всё описано довольно однозначно
Да вот нет! Особенно в части кода! У Вас есть задача, при которой необходимо удалить символы с начала и конца строки (String).
Цитата
написал:
Код
For n = 1 To 1000000
'        String_DelLR_InStr s, s2, sList, sList, True, True             ' 3.0
'        String_DelLR_AscW s, s2, aL, aR, True, True                    ' 1.1
'        String_DelLR_AscW_OneSym s, s2, 46, 46                         ' 0.6
Next n
  1. Пробывали Вы сделать ту же самую задачу стандартным Replace и если он не подходит, то почему (в чём специфичность задачи)?
  2. String_DelLR_AscW и String_DelLR_AscW_OneSym сравнивать некорректно, т.к. на выходе Вы получаете разный результат!
  3. По возможности, продемонстрируйте конкретный пример в Excel с данными, которые необходимо обработать, для полной картины, т.к. уже на основании описания и кода, можно сделать вывод, что Вы возможно ошибаетесь с выбором нужного алгоритма!
P.S. Без негатива!!!
Изменено: Aнастасия - 19.09.2023 18:52:24
Как лучше передавать аргументы в функцию или процедуру — ссылкой (ByRef) или значением (ByVal)?, ByRef or ByVal?
 
Выскажу своё мнение! Вы слишком углубляйтесь в тему, а это ни к чему, ведь излишняя оптимизация - это лишняя трата времени и удел новичков. Программирование макросов на VBA это прежде всего решение прикладных задач, где жёсткой потребности в Performance не требуется. Это же не системное программирование или разработка критических систем!  

Цитата
написал:
Мои тесты показывают, что ByVal может быть, в лучшем случае, НЕ медленнее ByRef и никаких преимуществ в его (ByVal) использовании я (во всяком случае, пока что) не вижу.
Главной идеей (по информации от разработчиков) создания данного механизма передачи данных является возможность изменять/неизменять программный элемент, лежащий в основе аргумента в вызывающем коде. То есть ни о какой производительности речи не идёт. Приоритет - универсальность!

Цитата
написал:
нет самого интересного (для меня), а именно — сравнения скоростей

Выбор механизма передачи данных, где в приоритете Performance (производительность) будет зависеть прежде всего от входных данных! Нельзя точно сказать, какой способ выбрать, если не знаешь, какие данные будешь обрабатывать!

То есть если на вход Вы передаёте String, Object, любые виды Arrays (вектор (одномерный массив), матрицу (двумерный массив) или тензор (3D массив и более)), то рекомендуется конечно передача через ByRef, иначе при ByVal во время инициализации процедуры с аргументами (её запуске) дополнительно будет произведено копирование данных в локальные переменные, что увеличит общее время выполнения функции! А работать приходиться, в основном с немалыми объёмами данных!

Если душнить, то есть такие понятия, как изменяемые и неизменяемые элементы, но это Вы можете в документации прочитать и без моих комментариев!

Итог: Разбирая только интересующую тему, а именно сравнение скоростей, то делаем вывод, что всё зависит от входных данных! Сравнивать производительность на незначительных примерах и цепляться за каждую наносекунду - это признак киберпсихоза и постоянства (нужно учить что-то новое, а не сидеть на одном стеке всю жизнь)!

P.S. Данный комментарий сгенерирован ботом на основе ChathGPT, которого разоблачили (Пруфы)!
Быстрое определения вхождения символа в список, Fast method to Define symbol by List
 
Цитата
написал:
вы больше похожи на бота/робота, чем на живого человека.
Зачем Вы так)? У Вас "подгорело", что Вам девушка написала комментарий или что случилось-то? Зарегистрировалась на свою голову)))
Изменено: Aнастасия - 20.09.2023 13:31:45
Быстрое определения вхождения символа в список, Fast method to Define symbol by List
 
Приветствую!
Сегодня зарегистрировалась на данном форуме и наткнулась на Вашу тему. Сразу к делу)

Из темы "Быстрое определения вхождения символа в список" я правильно поняла, что задача состоит в том, чтобы в векторе (одномерный массив) необходимо найти символ или группу символов?
Страницы: 1
Наверх