|
|
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
есть строка A=".-abcde ..." для сверки есть входная строка B="home" как без цикла проверить что каждый символ из входной строки присутствует в строке для сверки Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 18:51 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2008, 22:59 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
нет не так во первых конструкция if m(0).submutches(0) = B then ошибочка во вторых даже если через перебор коллекции то ничего нет A = "abcdefghmopuyt" B = "home" должно сработать A = "abcdefg" B = "home?" не должно сработать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 11:56 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
Нужно именно без циклов или просто быстро? Подобная сверка двух строк в 10 миллионов символов каждая с циклами выполняется из IDE за ~6 секунд: Код: 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. Устраивает или надо быстрей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 12:31 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
нет не то у меня не две строчки на миллион символов а одна строчка для сверки проверяет миллион входимых строк и для каждой нужно проверить что в каждой входимой строчке все символы попадают из строчки для сверки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 12:40 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
michael Rнет не то у меня не две строчки на миллион символов а одна строчка для сверки проверяет миллион входимых строк и для каждой нужно проверить что в каждой входимой строчке все символы попадают из строчки для сверки Я сравнивал две строки во 10 млн сиволов просто для того чтобы показать что функция работает быстро. Сверка 1 миллиона коротких строк навроде Код: plaintext 1. 2. 3. Выполняется менее чем за 0,3 секунды (на моем компьютере). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 12:52 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
Точнее наврал ~0,1 секунды. Кроме того можно еще быстрей легко сделать, если соптимизировать под конкретные условия... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 12:55 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
но цикл 255 раз иногда бежит зазря и во вторых могуг быть и UNICODE символы у меня было немного подругому каждый символ из входящей строчки сверялся через Instr в цикле со строчкой для сверки но мое впечатление что это долго ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 13:03 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
3 цикла как то не оптимально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 13:04 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
michael Rно цикл 255 раз иногда бежит зазря и во вторых могуг быть и UNICODE символы Зазря цикл не бегает. Из 3-го цикла при несовпадении вылетает сразу. Под UNICODE - надо несколько изменить код. Я же не знаю постановки твоей задачи... michael R у меня было немного подругому каждый символ из входящей строчки сверялся через Instr в цикле со строчкой для сверки но мое впечатление что это долго Конечно, это дольше. Так как неоптимально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 13:11 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
AndrF всё таки думаешь что 3 цикла быстрее чем один хотя уже 2 цикла строчка для сверки задаётся один раз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 13:33 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
michael R всё таки думаешь что 3 цикла быстрее чем один хотя уже 2 цикла строчка для сверки задаётся один раз Да, для строки сверки его можно выполнить один раз. Делай код для своей конкретной задачи - я ведь просто набросал пример одного из решений, не учитывающий твои условности о которых не знал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 13:37 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
Ладно спасибо попробую может действительно будет быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 13:44 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
michael Rнет не так во первых конструкция if m(0).submutches(0) = B then ошибочкаНет. Так. Исправить опечатку религия не позволяет? Ну а вообще-то, на второй взгляд можно сократить до вот этого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2008, 17:37 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
White Owl я просил это как без цикла проверить что каждый символ из входной строки присутствует в строке для сверки а не вся фраза ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2008, 10:35 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
Возможно-возможно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 11:49 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
Application.ReptЭто что за зверь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 14:21 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
Antonariy Application.ReptЭто что за зверь? Функция абочего листа Повтор() К сожалению функция String в VBA только один символ повторяет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 14:45 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
Deggasad действительно интересно придуманно а как в VB6 (без Excel) размножить строчку без цикла (не один символ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 16:06 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
michael R как в VB6 (без Excel) размножить строчку без цикла (не один символ) Вопрос ко всем у меня есть строка "DeggaSad" Как получить строку содержащую эту строку 20 раз например. Аналогично функции Повтор() в Exel, только в VB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 16:24 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
вот такое нашёл Function ReplicateString(Source As String, Len As Long) As String ' build a string of spaces whose length is equal to the number of ' repetitions, then replace each space with the string to be repeated ReplicateString = Replace$(Space$(Len), " ", Source) End Function есть вариант через API - Copy Memory ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 16:27 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 16:38 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
думаю что это в любом случае быстрее чем циклы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 17:01 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
Deggasad Код: plaintext 1. 2. 3. А как спецсимволы учесть правильно? А то что-то не получается сравнить такие строчки, к примеру: "abcde]" и "aabbc]" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 17:21 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
michael RWhite Owl я просил это как без цикла проверить что каждый символ из входной строки присутствует в строке для сверки а не вся фразаМой код как раз это и делает - проверяет что каждый из символов строки B упомянут в строке A. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 18:20 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
С открывающейся квадратной скобкой проблем нет Код: plaintext 1. 2. 3. а вот с закрывающейся похоже нужно в определённых местах её указать если нужно, напр частный случай с одной возможной скобкой Код: plaintext 1. 2. 3. 4. 5. 6. 7. впринципе можно рассматривать каждый частный случай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 18:42 |
|
||
|
Ускорить алгоритм ?
|
|||
|---|---|---|---|
|
#18+
Deggasad впринципе можно рассматривать каждый частный случай Решение довольно интересное, но есть громадное сомнение насчет его скорости. Если гнаться за максимальной скоростью, то думаю лучше брать за основу данный пример: Код: 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. Проверка в данном примере регистрозависимая, уенкод. Сделать регистронезависимой, при необходимости, совсем не сложно. Скорость выполнения данного теста (а в нем проверяется миллион строк) ~ 2,4 секунды из IDE/p-code и ~0,8 секунды из native-code. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 10:27 |
|
||
|
|

start [/forum/topic.php?all=1&fid=60&tid=2162689]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
82ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 443ms |

| 0 / 0 |
