|
|
|
Почему VB6 такой тормозной. Access и тот быстрее обрабатывает таблицы и запросы.
|
|||
|---|---|---|---|
|
#18+
klen_А как перегнать RecordSet в массив? Примерчик бы! Благодарю за запросы (см. выше). Что называется навёл на мысль! Да нафига в массив-то? Разницы с сканировании не ощутишь. Тот же Access ведь с табличкой не через ODBC работает, так что просто поменяй провайдера с ODBC на OLEDB. Ну как в примере от Worobjoff. Плюс к тому статический курсор и можно еще BatchOptimistic. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 09:31 |
|
||
|
Почему VB6 такой тормозной. Access и тот быстрее обрабатывает таблицы и запросы.
|
|||
|---|---|---|---|
|
#18+
AndrF[quot klen_]просто поменяй провайдера с ODBC на OLEDB. Ну как в примере от Worobjoff. Действительно стало работать быстрее. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 09:57 |
|
||
|
Почему VB6 такой тормозной. Access и тот быстрее обрабатывает таблицы и запросы.
|
|||
|---|---|---|---|
|
#18+
Access всё равно читает таблицу в миг. Буквально пару секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 10:01 |
|
||
|
Почему VB6 такой тормозной. Access и тот быстрее обрабатывает таблицы и запросы.
|
|||
|---|---|---|---|
|
#18+
Access не читает всю таблицу сразу, он зачитывает первые N записей - те, которые помещаются на экран. Да и в любом случае обмен данными между интерфейсами занимает времени больше, нежели при использовании только одной Access, это нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 10:05 |
|
||
|
Почему VB6 такой тормозной. Access и тот быстрее обрабатывает таблицы и запросы.
|
|||
|---|---|---|---|
|
#18+
klen_ Access всё равно читает таблицу в миг. Буквально пару секунд. Что понимаешь читает? Выводит на экран? Ну и в программе на VB можно точно так-же ее вывести. И вообще - скорость не должна зависеть от того на чем пишешь - на Access, VB или C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 13:51 |
|
||
|
Почему VB6 такой тормозной. Access и тот быстрее обрабатывает таблицы и запросы.
|
|||
|---|---|---|---|
|
#18+
MelkiadesAccess не читает всю таблицу сразу, он зачитывает первые N записей - те, которые помещаются на экран. Обыкновенный серверный курсор... MelkiadesДа и в любом случае обмен данными между интерфейсами занимает времени больше, нежели при использовании только одной Access, это нормально. Да никакой разницы, вообще-то... ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 13:52 |
|
||
|
Почему VB6 такой тормозной. Access и тот быстрее обрабатывает таблицы и запросы.
|
|||
|---|---|---|---|
|
#18+
AndrF MelkiadesДа и в любом случае обмен данными между интерфейсами занимает времени больше, нежели при использовании только одной Access, это нормально. Да никакой разницы, вообще-то... ;) Что значит никакой? Access что, работает с базой mdb через ODBC или через OLEDB? Я, конечно, не спец по Access, но имхо он работает с базой через собственное API, а не через этих провайдеров. Вот вам и разница. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 14:23 |
|
||
|
Почему VB6 такой тормозной. Access и тот быстрее обрабатывает таблицы и запросы.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 15:18 |
|
||
|
Почему VB6 такой тормозной. Access и тот быстрее обрабатывает таблицы и запросы.
|
|||
|---|---|---|---|
|
#18+
Все дело в межпроцессном взаимодействии. Если после каждого MoveVext приложение обращается к БД, тормозить будет. А если зафетчить все записи сразу, обращение будет лишь одно. Каждый раз, при обращении к другому процессу (в д.случае к МДБ) теряется время впустую. Приложение-клиент тупо ждет когда ОС "вспомнит" о его запросе и передаст его приложению-серверу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 16:17 |
|
||
|
Почему VB6 такой тормозной. Access и тот быстрее обрабатывает таблицы и запросы.
|
|||
|---|---|---|---|
|
#18+
klenSet db = CurrentDb() Метод косвенно указывает на то, что в коде Акса используется ДАО, а не АДО, а ДАО быстрее АДО само по себе (правда, вряд ли в столько раз, скорее на NN процентов), и как раз предназначено для работы с ДЖЕТ машиной максимально шустро. Зы-1: Это в дополнение к другим возможным объяснениям. Зы-2: Скорее трабла в долгом коннекте АДО к источнику, поскольку оно вот такое интеллектуальное. А КуррентДБ с рекордсетом ДАО фетчит сразу весь набор в память, да ещё в той же рабочей области, что и текущий коннект ДЖЕТА. Зы-3: Замерьте не весь кусок кода, а только циклы, исключив собственно коннект АДО из замера. Думаю, не будет такой разницы в разы. Там и "собака порылась"... :-) ИМХО, однако. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 17:19 |
|
||
|
Почему VB6 такой тормозной. Access и тот быстрее обрабатывает таблицы и запросы.
|
|||
|---|---|---|---|
|
#18+
WorobjoffВсе дело в межпроцессном взаимодействии. Если после каждого MoveVext приложение обращается к БД, тормозить будет. А если зафетчить все записи сразу, обращение будет лишь одно. Вообще-то при клиентском курсоре все данные сразу тащатся на клиентскую машину. Оттого и его название ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2006, 03:04 |
|
||
|
Почему VB6 такой тормозной. Access и тот быстрее обрабатывает таблицы и запросы.
|
|||
|---|---|---|---|
|
#18+
klen_текст на VB6 ЧИТАЕТ ЗА 12 СЕКУНД ~30 000 ЗАПИСЕЙ текст на Access-е ЧИТАЕТ ЗА ПАРУ СЕКУНД ~30 000 ЗАПИСЕЙ Вы прям волшебники какие-то... Ниже приведены результаты исходники и результаты теста на VB6. Видно что резко отличается лишь время заполнения таблицы. А примитивное сканирование 30000 записей в любом случае выполняется менее чем за секунду. Откуда взяли пару (а тем более 12! ) секунд??? Это ж какой талант надо иметь ;) автор--- Columns = 15, Rows = 30000 ADODB: ADODB_FillTable 37,656 ADODB: ScanTable (Client Cursor) 0,530 ADODB: ScanTable (Server Cursor) 0,312 DAO: DAO_FillTable 2,406 DAO: ScanTable (Snapshot Cursor) 0,438 DAO: ScanTable (Dynaset Cursor) 0,141 Исходник тестового модуля: Код: 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. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2006, 04:37 |
|
||
|
Почему VB6 такой тормозной. Access и тот быстрее обрабатывает таблицы и запросы.
|
|||
|---|---|---|---|
|
#18+
MelkiadesЧто значит никакой? Access что, работает с базой mdb через ODBC или через OLEDB? Я, конечно, не спец по Access, но имхо он работает с базой через собственное API, а не через этих провайдеров. Вот вам и разница. Access вообще-то работает с базой через провайдер, который ему укажут. Это был бы маразм для него собственное API работы с данными изобретать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2006, 04:46 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34166041&tid=2164880]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
83ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 402ms |

| 0 / 0 |
