powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Встать! Суд (над асинхронными запросами) идет! :)
25 сообщений из 56, страница 2 из 3
Встать! Суд (над асинхронными запросами) идет! :)
    #32264426
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нуф-Нуф, я тебе, конечно, верю,

но почему "параллельная функция" отработала быстрее "последовательной" ты по-русски сказать можешь? Или признать, что у меня в 1-м камне их штук 8?

"Параллельная" по-твоему:
1) запуск запроса
2) принимаем запрос, располагаем в потоке Jet с МЕНЬШИМ приоритетом
3) цикл (это поток с большим приоритетом, поэтому Jet-овский отдыхает)
4) rs.MoveLast – заставляет остановить поток VBA и выполнять поток Jet
5) возврат в поток вба хотя бы для дебуг.принт

"Последовательная" по-твоему:
1) запуск запроса
2) принимаем запрос, располагаем в потоке Jet с МЕНЬШИМ приоритетом
3) rs.MoveLast – заставляет остановить поток VBA и выполнять поток Jet
4) цикл
5) возврат в поток вба хотя бы для дебуг.принт

"Переключений минимум". По сравнению с чем, млин? И там и тут по 4 строки. Либо я по пояс деревянный, либо одно из двух.

Причем 5-м пунктом у тебя стоит
5) выполнение запроса

Какого запроса?! - мы на 4 шаге уже получили последнюю запись. Или запрос не отработался еще весь? Да и х. с ним, мне запрос не нафих не нужен, и там, и там, я уже имею, например, кол-во возвращенных им записей. Мне непонятно, почему эта(!) программа из 4 строк отрабатывается по-разному. (Результаты стабильны, не реагируют на кол-во запусков с точностью до 3-х значащих цифр разницы).

Нет, пойду я спать. (Ты, кстати, чего сам не спишь?) А завтра буду работать и заодно почитаю где-нить про асинхронные запросы. Сейчас только покурю... И Гетца полистаю...
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32264454
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>но почему "параллельная функция" отработала быстрее "последовательной" ты по-русски сказать можешь?
Geo, могу. Во-первых, в твоих тестах небыло никакого "паралельного" выполнения. В своих "ночных" постах я описал тест (для форм) и модификацию твоего теста, которые помогут тебе :) Во-вторых, Многозадачная система однако - погрешность в замерах времени неизбежна в любом случае.

>"Переключений минимум". По сравнению с чем, млин? И там и тут по 4 строки. Либо я по пояс деревянный, либо одно из двух.
:) Гео, еще пол-года назад я тоже ну нифига не знал о всяких там потоках, приоритетах, локальных стеках, мьютексах, симафорах, критических секциях и еще туевой хучи (кстати, о кучах тоже не знал:). Сейчас всё НАЧИНАЕТ проясняться. Спустя пол-года! Чё бы там нибыло, я не считаю себя по пояс деревянным, во-первых потому, что для меня это не первоочередная задача, а во-вторых из-за того, что я ранее никогда не мыслил и не оперировал понятиями многозадачных ОС. А ты хочешь за пару дней (на сколько я понял раньше ты не занимался в плотную этим вопросом) всё сразу схавать :)

По поводу твоих тестов...
Еще раз, выполни МОИ вариатны тестов и убедись, что в ТВОИХ вариантах ну нет ПАРАЛЛЕЛЬНОГО выполнения.
В моих пояснениях в самой первой строке указаны потоки и все нижние строки разнесены по ним. Правда хреновато получилось. Попробую по другому оформить:

Последовательное выполнение:
Код: plaintext
1.
2.
3.
4.
5.
  Потоки
VBA|ADO|Jet
  1  |   |
   |  2  |  2 
  3  |   |
  4  |   |
где
1 - запускаем запрос, т.е. вызываем ADO-метод. Кстати, здесь я логически вынес ADO в отдельный поток, хотя на самом деле это (видимо) не так - коль скоро ADO расположена в dll-ке, то она выполняется за счет вызвавшего ее потока, хотя, конечно, может создавать и собственные. И еще раз повторю, что главный вопрос не в том, как работает Виндоус, а как реализован Аксес!
2 - ADO получает запрос и выполняет его в синхронном режиме (тормознув поток VBA)
3 - выполнение цикла
4 - конец

"Параллельное" выполнение (Хотя оно у тебя не получилось параллельным!):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  Потоки
VBA|ADO|Jet
  1  |   |
   |  2  | 
  3  |   |
  4  |   |
   |   |  5 
  6  |   |
где
1 - запускаем запрос, т.е. вызываем ADO-метод.
2 - ADO получает запрос и выполняет его в Асинхронном режиме (запустив поток Jet с меньшим приоритетом). Т.е. здесь поток Jet уже может выполнять запрос, но ему просто не дают шанса, ведь есть более приоритетная задача - крутить цикл;
3 - выполнение цикла
4 - rs.MoveLast – заставляет остановить поток VBA и выполнять поток Jet
5 - выполняется запрос
6 - конец

Кстати, приоритетность потоков 100 пудово не единственный фактор! Т.е. потока синхранизируются одним из стандартных механизмов, но каким и как я не знаю. Т.е. обсуждаемый здесь вопрос не по Многозадачности и Виндоус, а по реализации Многозадачности Аксесом стандартными механизмами Виндоус. Разница ОЧЕНЬ ВАЖНА! О реализации винды писано моте информации (оно и понятно), а о реализации акса - практически ничего...
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32264466
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, брат, так просто ты от меня не отвертишься. Я, после получения своих результатов, избегал пользоваться терминами "асинхронный", да и "паралельный" употреблял преимущественно в кавычках.

1. "Параллельная" функция у тебя содержит 6 шагов по сравнению с 4-мя шагами "последовательной". Т.е. она должна выполняться дольше? У меня же получилось наоборот. Быстрее, более чем на 20%.

Погрешность в замерах времени? Я ж сказал, что запускал их несколько раз, и сейчас запустил. И - циферка в циферку - тот же результат. Вообще, я берусь утверждать, что мои процедуры в обоих случаях заставляю акцес инициализировать равное кол-во переключений. Более быстрое выполнение "параллельного" варианта обусловлено, скорее, как раз виндами, т.к. они, при всей своей вытесняющей многозадачности, обязаны отдавать процессорное время и задаче с меньшим приоритетом, иначе они бы работали как в известном анекдоте про Билла Гейтса и дискету. Возможно, и в том, и в другом случае Jet получает свое время, но в "параллельном" он находит, чем это время занять, а в "последовательном" просто рапортует, что делать, мол нечего, и спасибо на добром слове.

2. В Гетце (2-й том, 1-го у меня сейчас нету) по оглавлению не встретил ничего похожего, но, думаю асинхронные запросы - это запросы, в первую очередь исполняемые именно на сервере (пусть даже им выступает лок. к-р), не в Акцессе. Тогда по определению они должны давать выигрыш в скорости работы - аксу делать-то нечего, сиди себе да опрашивай StillExecuting.

3. Так и знал, что спать буду плохо.
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32264479
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Нет, брат, так просто ты от меня не отвертишься.
НА-СИ-ЛУ-ЮТЬ!!!
Гео, да ты что? Я неслыханно рад, что нашелся еще один человек, который пытается разобраться в том, как же это все работает, а не "отвертивается" словами типа: "Акс - это среда быстрой разработки и информации из Helpа для работы с ним вполне достаточно".

Другое дело, что мы не можем никак синхронизировать наши термины и наши исходные понятия :(

>1. "Параллельная" функция у тебя содержит 6 шагов по сравнению с 4-мя шагами "последовательной". Т.е. она должна выполняться дольше? У меня же получилось наоборот. Быстрее, более чем на 20%.
Эти 6 шагов - всего лишь мое предположение и как реально работает АКСЕСС я не знаю.

На счет всего остального - х.з. Единственное, что могу утверждать - пока ты не проведешь описанные мной тесты, не проанализируешь результаты, не сделаешь выводы и не выложишь их сюда - мы так и будем стоять на месте, выясняя кто и что имел в виду под термином "параллельно". Я не пытаюсь тебя нагло эксплуатировать (типа, пусть всё сделает, а мне потом расскажет) - я эти тесты давно проделал. И даже еще одни тесты и еще одни... Но мы даже с нашими первыми не разобрались.

А на сегодня у меня всё. Инет "закончился" :)
До завтра!
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32264514
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Нуф-Нуф
Попробовал я сделать то что ты предложил:

№1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Dim t As Double, t1 As Double

Private Sub Form_Open(Cancel As Integer)
  t = Time
  Debug.Print  "Не мешаем загружать записи" 
  Me.TimerInterval =  1000  ' Секунда
End Sub

Private Sub Form_Timer()
  t1 = t
  t = Time
  Debug.Print mSec(t, t1) &  " мс: "  & Me.Recordset.RecordCount
End Sub

Private Function mSec(a As Double, b As Double)
  mSec = (a - b) *  24  *  60  *  60  *  1000 
End Function


№2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Form_Open(Cancel As Integer)
  Dim t As Long
  Debug.Print  "Мешаем загружать записи" 
  Do While True
    t = t +  1 
    If (t Mod  100000 ) =  0  Then
      Debug.Print Me.Recordset.RecordCount
    End If
  Loop
End Sub


Вот результаты:
№1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Не мешаем загружать записи
 999 , 999999996959  мс:  501 
 1000 , 00000000655  мс:  501 
 999 , 999999996959  мс:  501 
 1000 , 00000000655  мс:  501 
...
...
 А после нажатия на кнопку перехода к последней записи:
 1000 , 00000000655  мс:  2293760 
 999 , 999999996959  мс:  2293760 
...


№2
src]Мешаем загружать записи
1
1
1
1
...[/src]

А вот еще одна:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Кнопка3_Click()
  Dim t As Long
  Dim rs As DAO.Recordset
  Debug.Print  "Мешаем рекордсету" 
  Set rs = CurrentDb.OpenRecordset( "Select * from t WHERE t.fio="  "Иванов"  ";" )
  For t =  1  To  100000000 
    t = t
    If (t Mod  100000 ) =  0  Then
      Debug.Print rs.RecordCount
    End If
  Next
  Debug.Print " ---------------------------"
 
End Sub


И ее результат:
Код: plaintext
1.
2.
3.
4.
5.
Мешаем рекордсету
  1  
  1  
  1  
  1  
...


Эта, последняя - всего лишь небольшая переделка моего первого теста. Т.е. кол-во записей вроде-бы тоже = 1, но в итоге переход к последней записи, после того как мы, вроде бы, не давали Jet'у передохнуть, дался ему намного легче...

Объясняй :)
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32264528
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однажды, после долгих раздумий,заметил, что Асинхронность - это всего лишь DoEvents внужных местах. Что успешно и применял.
Очень хорошо получаеться использовать асинхронность в клиент-серверных приложениях - только не забыдь предусмотреть "отваливанивание" клиента.
С mdb - сложней: умер клиент - умерла "асинхронность". Пример: оператор нажав кнопку Сохранить документ (к-ая запускает 10минутную процедуру(ы)) - ... выключил ПК - а чё - документ-то провелся.
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32264580
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не в тему....
а что делает акс когда пишет "Обработка команды..." ?
уж не выполняет ли какие действия связанные с асинхронностью ?
у меня большая проблема. это "обработка команды" гадит весь интерфейс программы. мелькание не управляемое (уже после эхо=тру), тармаза...
и что может делать акс(адр) 0.3 сек?
уже после обработки всех действий оператора? доделывать асинхронные дела? какие?
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32264581
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
доделывать асинхронные дела?

Хршо... :)
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32264582
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тебе смешно ......
а я всё что можно сломал на этим
ужо бредить начал...
решение красивое. алгоритмы всё решены красиво. все дело идет к прекраной конфетке...
все нравится ... а эта гадость обмазывает ....
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32264585
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2вадя
Да я сам из-за Нуфа уже извилину свою покривил всю. Синхронно, несинхронно, млин. Чепуха какая-то. Пусть теперь объясняет :)

Вообще я думаю (все, что я пишу, касается дао, про адо я знаю только его название), что запрос на выборку, селект то бишь, отрабатыватся по умолчанию "А-синхронно", т.е. положил, сколько просят, и не мешай, пока не позовут. А изменение и добавление (упдате и инсерт соответственно) стараются отработаться сразу, "Синхронно" (по-нашему, сделай дело - гуляй смело), и пофиг им, что кто-то чего-то там хочет еще сказать. Это все если по умолчанию и на локальной машине. Если на другой, на сервере там, или еще где, то все становится понятным. Он работает, а ты смотришь, пока он флажок Executing не выставит. А вот на локалке... Но про упдаты я уже сегодня смотреть не буду - что я, дурак что-ли, завтра опять с расстройства квасить?..
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32265616
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geo, наш диалог, имхо, перешел во вторую стадию - стадию тестов. Я терминологией определились, с общими принципами организации ВИНДОЙ многозодачности - тоже, осталось разобраться с Аксом :)

Результаты твоих тестов показались странными, поэтому пока объяснить ничего не могу. Т.е. у меня никогда не получалось в OnOpen увидеть одну запись (твой второй тест, где результат - 1). Буду пробовать еще раз.

На счет "буду пробовать" и "стадия тестов"... К сожалению не сегодня... С работы сразу в гараж (внеплановый ремонт машины собственными силами), а сейчас уже тоже уезжаю - комп доступен не будет. Надеюсь завтра провести ряд тестов и продолжить тему.

=======

Виктор, на счет DoEvents во "нужных местах" согласен на все 100%, вот только в большинстве случаев такие нужные места находятся методом тыка или подсознательных предположений, что, дескать, не помешало бы тут ДуЭвентс влепить (тупые долгоиграющие циклы не в счет). Вот и хочется перейти с подсознательного использования на абсолютно осознанное :) Тем более, что мне за это не платят

На счет примера с mdb спасибо! Получилось в тему топка, ну то есть в контексте означенной в самом первом посте топика задачи. Учтем...

=======

Вадя, на счет " а что делает акс когда пишет Обработка команды...? " думаю из разряда "фик его знает", тем более, что наверняка делает разные вещи - без тестов не обойтись ;) //пытается втянуть в начинающуюся авантюру с тестированием еще одного участника :)
Т.е. тестировать, тестировать и еще раз тестировать! Хотя, я тут вспомнил один прикол на эту тему - сегодня повспоминаю все тонкости, а завтра сформулировать и выложить.
Но ты тоже не сиди "без дела" (в решении данного вопроса) - составь список всех (интересных тебе) команд, которые заставляют акс писать такие гадкие вещи :)

========

Sfagnum, не прячься! Се равно мы знаем, что ты сюда заглядуешь и даже идеи для общего дела тыриш Т.е. я к тому, что вместо ФАКа отвечу тебе здесь...
Я не против того, чтобы дальше описать всё то, что наобещал там, но, во-первых краткие выжымки-ответы уже доступны в этом топике, а во-вторых моя уверенность пошатнулась :) Видиш ли, пришел Гео, начал задавать провокационные вопросы и почва под ногами начала плавать Т.е. мне необходимо время, чтобы еще всё разок протестировать и убедиться, что всё что я знаю - верно.

Всем удачи! //ушел...
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32265651
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Нуф-Нуф

Если честно, на mdb я ничего подобного не использовал (кроме "тупых циклов" - что получалось достаточно симпатично: грузиться журнал, а спрогой можно работать (в т.ч. и с журналом))
На Adp - другое дело: Открыл Connect как "асинхронный" и все теперь чудестным образом (спасибо фее Билли) открываеться асинхронно. А клиент теперь может благополучно и скончаться, не дожидаясь ответа сервера (или нет? надо проверить (фее могла и на ср%ть), но у меня че-то 10-минутных задач не попадалось)
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32265734
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уфф... Все сделал.
Решил перед отходом ко сну перечитать, что ты сегодня написал, и обратил внимание на

определились с общими принципами организации ВИНДОЙ многозодачности

Уже? Ты куда торопишься? ;) А про отсутствующую 11-ю секунду, из-за которой шум-гам? Или спишем ее на акцес или же jet? Блин, сейчас сделаю тест по варианту ЛП...
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32265746
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Нуф-Нуф

Не совсем по варианту ЛП, но похоже. Та же мдб-шка "все-в-одном", две идентичных таблицы t и t1

Процедура № 1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  Dim tt As Double
  Dim tt1 As Double
  Dim rs As DAO.Recordset
  Dim rs1 As DAO.Recordset
  
  tt1 = Timer
  Set rs = CurrentDb.OpenRecordset( "Select * from t WHERE t.fio="  "Иванов"  ";" , , dbRunAsync)
  Set rs1 = CurrentDb.OpenRecordset( "Select * from t1 WHERE t1.fio="  "Иванов"  ";" , , dbRunAsync)
  tt = Timer
  Debug.Print mSec(tt, tt1) &  " мс. Rs: "  & rs.RecordCount &  " rs1 "  & rs1.RecordCount
  rs.MoveLast
  tt1 = tt: tt = Timer
  Debug.Print mSec(tt, tt1) &  " мс. Rs: "  & rs.RecordCount &  " rs1 "  & rs1.RecordCount
  rs1.MoveLast
  tt1 = tt: tt = Timer
  Debug.Print mSec(tt, tt1) &  " мс. Rs: "  & rs.RecordCount &  " rs1 "  & rs1.RecordCount
  Debug.Print  "---------------------------" 


Процедура № 2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
  Dim t As Long
  Dim tt As Double
  Dim tt1 As Double
  Dim rs As DAO.Recordset
  Dim rs1 As DAO.Recordset
  
  tt1 = Timer
  Set rs = CurrentDb.OpenRecordset( "Select * from t WHERE t.fio="  "Иванов"  ";" , , dbRunAsync)
  Set rs1 = CurrentDb.OpenRecordset( "Select * from t1 WHERE t1.fio="  "Иванов"  ";" , , dbRunAsync)
  tt = Timer
  Debug.Print mSec(tt, tt1) &  " мс. Rs: "  & rs.RecordCount &  " rs1 "  & rs1.RecordCount
  For t =  1  To  100000000 
    t = t
  Next
  tt1 = tt: tt = Timer
  Debug.Print mSec(tt, tt1) &  " мс. Rs: "  & rs.RecordCount &  " rs1 "  & rs1.RecordCount
  rs.MoveLast
  tt1 = tt: tt = Timer
  Debug.Print mSec(tt, tt1) &  " мс. Rs: "  & rs.RecordCount &  " rs1 "  & rs1.RecordCount
  rs1.MoveLast
  tt1 = tt: tt = Timer
  Debug.Print mSec(tt, tt1) &  " мс. Rs: "  & rs.RecordCount &  " rs1 "  & rs1.RecordCount
  Debug.Print  "---------------------------" 


Вспомогательная
Код: plaintext
1.
2.
Private Function mSec(a As Double, b As Double)
  mSec = CLng((a - b) *  1000 )
End Function


Каждую из процедур запускал по 5 раз с и без аргумента dbRunAsync. Вот:
Код: 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.
 1 -Async						
Время     N1      N2      N3      N4      N5      Среднее
 1           10        0         0         0         0         2 
 2           2574      2273      2314      2304      1872      2267 
 3           1872      1883      1882      1883      1873      1879 
Итого      4456      4156      4196      4187      3745      4148 

 1 -w/o arg3						
Время     N1      N2      N3      N4      N5      Среднее
 1           0         10        10        10        0         6 
 2           2254      1872      1873      2814      1873      2137 
 3           1825      1853      1853      1853      1853      1847 
Итого      4079      3735      3736      4677      3726      3991 

 2 -Async						
Время     N1      N2      N3      N4      N5      Среднее
 1           10        0         10        10        10        8 
 2           5728      5728      5728      5719      5728      5726 
 3           1862      1862      1853      1862      1853      1858 
 4           1833      1843      1852      1843      1852      1845 
Итого      9433      9433      9443      9434      9443      9437 
без цикла  3705      3705      3715      3715      3715      3711 

 2 -w/o arg3						
Время     N1      N2      N3      N4      N5      Среднее
 1           0         0         0         0         10        2 
 2           5588      5658      5588      5598      5588      5604 
 3           1863      1863      1843      1832      1843      1849 
 4           1842      1842      1813      1823      1872      1838 
Итого      9293      9363      9244      9253      9313      9293 
без цикла  3705      3705      3656      3655      3725      3689 


Итак. Во время цикла явно "что-то происходит". Аргумент dbRunAsync явно на что-то влияет, хотя и не должен. Причем по-разному.

Все. Если ты это не объяснишь, то я больше никогда... Никогда(!) не буду даже думать про эти дурацкие запросы. Только спать мешают :)
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32265750
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, я не написал, что во всех четырех случаях печатались такие результаты:

после открытия рекордсетов:
nnn мс. Rs: 1 rs1 1
после rs.moveLast:
nnn мс. Rs: 229376 rs1 1
после rs1.movelast:
nnn мс. Rs: 229376 rs1 229376
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32266072
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП писал:"dbRunAsync Runs an asynchronous query ( ODBCDirect workspaces only )."а у меня: "Executes the query asynchronously (ODBCDirect Connection and QueryDef objects only)." Правда у меня Access'97

Geo писал:я тебе, конечно, верюНу ребяты прям Королёва с Тарзаном млин... :)

Нуф-Нуф писал:Sfagnum, не прячься!Внимательно наблюдаю, но как Му-му.

Geo писал:Итак. Во время цикла явно "что-то происходит". Аргумент dbRunAsync явно на что-то влияет, хотя и не должен. Почему не должен??? а на хрена он тогда??? Geo писал:Причем по-разному.2 раза в одну и ту же реку не войти...(смысл высказавания какого то древнего мудреца)
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32266130
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а у меня: "Executes the query asynchronously (ODBCDirect Connection and QueryDef objects only)." Правда у меня Access'97

А у меня тоже аксес 97-й есть. Но русский.
"dbRunAsync Асинхронное выполнение запроса (только для объектов Connection и QueryDef в рабочей области ODBCDirect)"

Учи английский, Мох!
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32266368
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
учись цитировать хорошо переносящий обрезание причём с двух сторон...
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32266485
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понял... у тя что хелп переводной под Access'97?
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32266496
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле?
Аксес 97 - русский, и хелп к нему не чукотский аднака.
В тоже русском ХР - как ни странно фифти (русский) - фифти (чукотский) - фифти (вапсче нет). Что то много фифтей получилось :)
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32266517
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, я понял. Ты наверное DAO обновлял (сервиспачил). Поставил аглицкий DAO с аглицким же хелпом. Было когда-то такое.
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32266531
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет всегда был аглицкий, не люблю русифицированный софт... да и не дают :)
Вышли, если не жалко, эти файлы, мыло в профиле
"C:\Program Files\Microsoft Office\Office\ACMAIN80.HLP"
"C:\WINDOWS\SYSTEM\JETSQL35.HLP"
если есть хлп к более позднему Jet'у тоже буду рад
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32266577
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, вечером пошлю.
Хелпа к более позднему - нихт.
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32266648
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пасибки
...
Рейтинг: 0 / 0
Встать! Суд (над асинхронными запросами) идет! :)
    #32268491
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geo, кроме того, что уже говорил добавить нечего...
Во-первых, разница в 15 сотых секунды слишком мала, чтобы делать по ней выводы в условиях многозадачной среды...

Во-вторых, ни в одном из твоих последних тестов опять нет "параллельности" - запросы может быть и асинхронно запускаются, но не выполняются параллельно коду. Самое интересное я не увидел:
Код: plaintext
1.
2.
3.
4.
5.
  Debug.Print mSec(tt, tt1) &  " мс. Rs: "  & rs.RecordCount &  " rs1 "  & rs1.RecordCount
  For t =  1  To  100000000 
    t = t
  Next
  tt1 = tt: tt = Timer
  Debug.Print mSec(tt, tt1) &  " мс. Rs: "  & rs.RecordCount &  " rs1 "  & rs1.RecordCount
Здесь какое количество записей было до начала выполнения цикла и по его окончании? 1 и... 1? Всегда 1 и 1! Какие бы ты ни ставил атрибуты асинхронности, всегда 1 и 1! Это говорит о том, что никакой параллельной работы не выполняется (запрос || код).
Для того, чтобы увидеть всё же параллельное выполнение (без кавычек) добавь в цикл DoEvents и еще разок запусти... На выходе из цикла количество записей в рекордсете должно быть больше 1... С DAO не эксперементировал, но с ADO именно так и было. И вот теперь, когда мы добились настоящей параллельности замеряй время выполнения. "11-я секунда" тебе гарантированна.

Но это так... Отмазки... Как-нибудь найду время и силы, свояю базку с всеми необходимыми и что-либо объясняющими тестами, выложу ее где-нибудь и обязательно вернусь к данной теме... А пока... Пока можно считать, что твои тесты остались без комментариев с моей стороны и ты теперь можешь спать спокойно :)
...
Рейтинг: 0 / 0
25 сообщений из 56, страница 2 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Встать! Суд (над асинхронными запросами) идет! :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]