|
|
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
Задачка следующая. Сейчас открываю рекордсет rs с 1000 записей и тремя полями. Затем в цикле перебираю все записи: Код: plaintext 1. 2. 3. 4. 5. 6. Т.к. этот цикл запускается в другом цикле (rs открыт постоянно: перед запуском вложенного цикла делаю rs.MoveFirst), на большом количестве записей в rs прога начинает подтормаживать. Вопрос. А если заменить rs трехмерным массивом, будет ли хотя бы какое-то ускорение работы? Работаю в A97. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:14 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
мама миа... А запросом не проще ли?? Для чего в данном случае используется ф-ия InStr? Т.е. куды попадаит возвращаемое ей значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:18 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
Ускорение будет, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:19 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
А в массив вы как будете данные закачивать? Через rs? И где тут ускорение? Я так понял, что у вас 3 цикла (по каждому из полей)? Итого 1000^3 Массив у Вас тоже в даун уйдет при миллиарде итераций - надо что-то в алгоритме менять - или смириться И массив вам судя по всему не 3-х мерный нужен, а 3 одномерных? Если да - то массивы быстрее должны работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:22 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
теперь я вообще ничего не понимаю. Как можно Рекордсет (столбцы, строки) заменить ТРЕХмерным массивом (кубиком) ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:22 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
2 zz автортеперь я вообще ничего не понимаю. Как можно Рекордсет (столбцы, строки) заменить ТРЕХмерным массивом (кубиком) ??? Насколько я понимаю - примерно так :) Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:25 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
2 paparome: Ускорение будет за счет того, что сейчас проход по рекордсету делается внутри цикла, а для загрузки достаточно однократного прохода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:27 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
у рекордсета есть GetRows, возвращает ДВУМЕРНЫЙ массив. В среднем это будет быстрее, но сильно зависит от типа рекордсета. Кажется, самый быстрый вариант будет, если рекордсет ФорвардОнли. Есть еще детали в зависимости от того, чей он - DAO или ADO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:28 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
2 paparome: Ну и хде тута трехмерность? Типа, третья ос? Не-е-е... И вообще, чем обсуждать, что быстрее - массив или рекордсет, надо попросить человека привести полный код. Чует мое сердце, его задача решается двумя UPDATE и одним SELECT :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:28 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
замечание при 3000 сравнений есть смысл подумать о замене Instr на InStrB, тем больший, чем длиннее сравниваемые пары. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:32 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
2 Саныч Я ж не против :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:33 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч А есть ли опыт? Меня интересует стоит ли овчинка выделки. Хотя бы ориентировочная экономия времени, при прочих равных условиях. 2 zz Запросом нельзя. Я просто упростил выражение в скобках InStr(). Трех мерный массив это не куб. Имел ввиду массив вида Arr(1000,2), где 2 и дает "три измерения" (или 2 строки), куда можно затолкать весь rs. 2 paparome Цикла 2, как написал: во внешнем цикле rs и результаты InStr никак не используются. rs открывается ОДИН раз при запуске базы. Если его данными заполню массив, то это время мне не критично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:41 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
2 Alex: Ну все-таки, если не трудно, приведи кусок кода, где ты работаешь с рекордсетом. Может, и действительно нельзя запросом. Но я скотина недоверчивая, хочу сам проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:44 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
авторТрех мерный массив это не куб. Трехмерный массив - это куб (с фактами не поспоришь :)) А у Вас двухмерный массив, точнее - даже два одномерных :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:47 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
2 Victosha Я тоже думал о такой замене. A что InStrB быстрее InStr? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:48 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
2 zz Вот небольшой кусочек. Хочу выжать из VBA максимум возможного. Повторяю, это Access 97, т.е. DAO.rs. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:55 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
возможно отсоединенный рекрсет будет работать сравнимо со скоростью массива. (а может быстрее??) если не сложно сравни и сообщи результаты самому интересно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 16:58 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
Какова примерная длина строки G? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 17:12 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
2 zz 100 - 255 символов. В 90% ~ 200 символов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 17:16 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
еще 2 вопроса. Какова примерная длина rstx("Name") и как максимально/в среднем часто может встечаться rstx("Name") в G? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 17:24 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
2 zz Длина rsx("Name") ~ 2 - 20 символов. В 90% ~ 3 - 10 символов. Число вождений одного значения rsx("Name") в G ~ 0 - 6. Число вождений всех значении rsx("Name") в одну строку G ~ 0 - 10. В 90% ~ 1 - 3. В приведенном куске кода, W = Len(G). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 17:31 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
Ладно, всем пока. Пошел я домой. На выходных поломаю голову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 17:32 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
zz , на тебя вся надежда ;-). Счастливо отдохнуть! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 17:37 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
щас сильно в мыле а InStrB заметно быстрее InStr, если память не изменяет, %15-20 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 17:38 |
|
||
|
Что быстрее: перебор строк рекордсета или элементов массива?
|
|||
|---|---|---|---|
|
#18+
Все-таки я ее решил. Алекс, проверь. Итак два запроса. 1-ый запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 7. зовется он strBase. 2-ой запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Как видно, все основано на том, что поле "Name" не будет входить более 6 раз в строку G. Alex, за тобой тестирование :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 17:46 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32518589&tid=1674595]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
198ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 538ms |

| 0 / 0 |
