|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
a_voronin Код: c# 1. 2. 3. 4. 5.
Код: plaintext 1.
а после этого - Код: plaintext
и убедиться, что ваш LINQ .Cast<Match>().Select(m => m.Value).Distinct().ToArray() не тормозит а то, может быть, оставить от этого только Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 14:15 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
но если поиск лучше прерывать первом совпадении, то так: Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 15:00 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
mikron a_voronin Вы думаете в C++ или TurboPascal не было ByCode. Или его не было в Фортране и PL/1. И да, я так думаю. Покажите мне bytecode в C++? Что вы понимаете под словом "покажи"? Компилятор его в памяти у себя формирует и никуда не сохраняет. Это .NET и JAVA его специально сохраняют. А на иных компиляторах его не сохраняли никуда. По любому есть такой этап, как сопоставление кодов неких условных конструкций с кодами процессорных команд. Этот этап присуствет в любой компиляции. Вот здесь например, упоминается некий object code для с++ между компилятором и линковкой. http://courses.washington.edu/css342/zander/css332/arch.html ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 15:44 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
a_voronin mikron пропущено... И да, я так думаю. Покажите мне bytecode в C++? Что вы понимаете под словом "покажи"? Компилятор его в памяти у себя формирует и никуда не сохраняет. Это .NET и JAVA его специально сохраняют. А на иных компиляторах его не сохраняли никуда. По любому есть такой этап, как сопоставление кодов неких условных конструкций с кодами процессорных команд. Этот этап присуствет в любой компиляции. Вот здесь например, упоминается некий object code для с++ между компилятором и линковкой. http://courses.washington.edu/css342/zander/css332/arch.html Ты спутал байт-код с AST. Хотя ты близок к правде. Если-б говорил про Clang. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 15:50 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
А байткод java - вообще не в кассу. Он - для стековой машины а не для регистровой. Как калькулятор МК-61. Понимаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 15:51 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
какой смысл вообще теребить вопрос ассемблера в этом разделе? если, не жить, не быть, надо на C++ сделать, напишите библиотеку на C++, сделайте импорт и используйте на здоровье. вся эта возня на порядок повысит сложность проекта и его сопровождение, надо будет поддерживать такой код для всех поддерживаемых архитектур и отладка будет не такой уж тривиальной, думаю ваши коллеги это не оценят. есть куча решения для полнотекстового поиска в базах, в памяти и где угодно еще, вместо того, чтоб потратить кучу часов на изобретения очередного самоката с квадратными колёсами, лучше бы потратили время на поиск готовых решений. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 16:01 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
mayton a_voronin пропущено... Что вы понимаете под словом "покажи"? Компилятор его в памяти у себя формирует и никуда не сохраняет. Это .NET и JAVA его специально сохраняют. А на иных компиляторах его не сохраняли никуда. По любому есть такой этап, как сопоставление кодов неких условных конструкций с кодами процессорных команд. Этот этап присуствет в любой компиляции. Вот здесь например, упоминается некий object code для с++ между компилятором и линковкой. http://courses.washington.edu/css342/zander/css332/arch.html Ты спутал байт-код с AST. Хотя ты близок к правде. Если-б говорил про Clang. Нет, это ты плохо текст прочитал The source code is translated into object code, which is similar in nature to byte code. Создание байт кода это этап любой компиляции. Называть его могут по разному. Но когда исходники разбираются по AST, то формируемые при этом данные и есть байткод, не зависимо от того, как его называют. MSIL OBJECT CODE и т.д. Уже потом байт код и сопоставляется с командами CPU. Именно на этом этапе преобразования и вылавливаются паттерны, которые могут быть преобразованы в более оптимальные команды (оптимизация). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 16:02 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
L1G и убедиться, что ваш LINQ .Cast<Match>().Select(m => m.Value).Distinct().ToArray() не тормозит а то, может быть, оставить от этого только Ключевым здесь является Distinct(), именно ради него вся конструкция и напридумана. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 16:12 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
a_voronin, Object Code и ByteCode имеют одно принципиальное отличие: byte code выполнятся в виртуальной машине. ПС. Хватит уже упрямого мальчишества. скучно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 16:13 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
a_voronin mayton пропущено... Ты спутал байт-код с AST. Хотя ты близок к правде. Если-б говорил про Clang. Нет, это ты плохо текст прочитал The source code is translated into object code, which is similar in nature to byte code. Это просто прекрасно. Я имею в виду "which is similar in nature to byte code." Это знаешь... как Бог создал Адама по образу и подобию. Или как Рабинович напевал Шаляпина. Я думаю что если-бы ты изучал JVM-specs, то у тебя не возникло-бы желания проводить параллели между байткодом JVM, и object code их С++. Уверяю тебя. Это очень разные вещи. Но мы отвлеклись. Я надеюсь ты согласен, что в оптимизации производительности как и в любой другой науке есть некий алгоритм или последовательность. Написание прототипа по готовому алгоритму. Симуляция нагрузки Анализ узких мест (боттлнек или хотспот). И уже после этого идут различного рода предположения. Что если данный метод переписать с Python на С++ или на Ассемблер то мы выиграем в перформансе там... +30% к примеру. Ты согласен с таким подходом? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 16:18 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
Сон Веры Павловны a_voronin Потому что C++ компилятор может превратить for(int i = 0; i < 100; i++) a[i] = 6; в три команды загрузки регистров и команду rep stosd , а MSIL компилятор будет делать условный переход. При этом задача решаемая. Так может наконец взять в руки С++, раз там всё так хорошо, и перестать есть кактус? полумеры, АСМ ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 16:26 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
love_bach Сон Веры Павловны пропущено... Так может наконец взять в руки С++, раз там всё так хорошо, и перестать есть кактус? полумеры, АСМ Я как-то 10 лет назад решил переписать кусок кода с C++ на ассемблер. Простой код -- цикл в цикле там был с несколькими сложениями. Каково было мое удивление, когда я обнаружил, что написанный мной на ассемблере код, работает медленнее того, что выдал компилятор с++. раза в 2. Стал смотреть -- он выдал ровно тоже команды, что и я написал, но задействовал другие регистры. так что не факт, что прямой АСМ даст лучший результат, чем С++. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 17:03 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
a_voronin Ключевым здесь является Distinct(), именно ради него вся конструкция и напридумана. Код: c# 1. 2.
остаётся найти пересечение двух HashSet - должно быть жутко быстрым (сравниваются в основном уже готовые хэш-суммы), но я не уверен, что HashSet.IntersectWith(IEnumerable) оптимизирован для случая, что параметром будет второй HashSet. тогда, наверное, idset.IntersectWith(searchset) будет быстрее, чем наоборот searchset.IntersectWith(idset) (но не быстрее, чем просто idset.IntersectWith(SearchStringsListOrArray) - ради интереса я бы проверил все варианты) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 18:51 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
Если предположить что один из хеш-сетов - константа то задача интерсекта просто сводится к отслеживанию пересечения в фазе формирования второго хешсета. Тоесть мы по сути делаем спред тяжелой операции на набор мелких в итерации когда большая хештаблица наполняется. А наполняется она обычно из файла или из сокета или из БД а там требования к скорости ослаблены в 1000 раз примерно. Это похоже на шаблон CQRS ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 19:43 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
mayton, я бы параллелил вызовы функции поиска набора строк в 1 большой строке (вкупе с загрузкой этих больших строк) т.е. внутри самой функции (поиска набора строк в 1 большой строке) что-то параллелить не вижу смысла в данном конкретном случае ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2020, 20:07 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
mayton Тоесть мы по сути делаем спред тяжелой операции на набор мелких в итерации когда большая хештаблица наполняется. А наполняется она обычно из файла или из сокета или из БД а там требования к скорости ослаблены в 1000 раз примерно. Это похоже на шаблон CQRS О_о ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2020, 01:15 |
|
массовый поиск подстрок в строке
|
|||
---|---|---|---|
#18+
a_voronin L1G и убедиться, что ваш LINQ .Cast<Match>().Select(m => m.Value).Distinct().ToArray() не тормозит а то, может быть, оставить от этого только Ключевым здесь является Distinct(), именно ради него вся конструкция и напридумана. бред какой-то. Оправдать можно только временем, потраченным на разглядывание ассемблера. Обидно же будет, если, к несчастью, вдруг заработает быстрее 30 секунд, вместо правильных трёх минут. .... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2020, 01:54 |
|
|
start [/forum/search_topic.php?author=%D0%9E%D1%82%D0%B2%D0%B5%D1%82%D1%87%D0%B8%D0%BA&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 241ms |
total: | 536ms |
0 / 0 |