Всем доброго дня!
Пока что изыскания следующие:
- Небольшая статистика запуска 2-х таблиц квика (инструменты и позиции по деривативам) по дде показала, что разница весьма существенная. В моем примере виста отработала в 9 раз медленнее. Статистика условная, т.к. конфигурации компьютеров были разными, хотя и похожими.
Vista
Запуск экспорта по ДДЕ
Выпонение метода GetQuikWindows(Process process) заняло 0,3300634 секунд. Метод вернул 12 из 565 окон
Выпонение метода GetQuikWindows(Process process) заняло 0,3549551 секунд. Метод вернул 12 из 565 окон
Выпонение метода GetQuikWindows(Process process) заняло 0,329384 секунд. Метод вернул 13 из 566 окон
Открытие DDE окна => Выпонение метода WaitFor заняло 0,6904268 секунд
Остановка DDE вывода => Выпонение метода WaitFor заняло 0,0019952 секунд
Запуск DDE вывода => Выпонение метода WaitFor заняло 0,004298 секунд
Выпонение метода GetQuikWindows(Process process) заняло 0,355389 секунд. Метод вернул 12 из 566 окон
Закрытие DDE окна => Выпонение метода WaitFor заняло 0,355694 секунд
Запуск окна с заголовком <инструменты> занял 1,3918877 секунд
Выпонение метода GetQuikWindows(Process process) заняло 0,3480023 секунд. Метод вернул 12 из 565 окон
Выпонение метода GetQuikWindows(Process process) заняло 0,3566171 секунд. Метод вернул 12 из 565 окон
Выпонение метода GetQuikWindows(Process process) заняло 0,3168064 секунд. Метод вернул 13 из 566 окон
Открытие DDE окна => Выпонение метода WaitFor заняло 0,6788765 секунд
Остановка DDE вывода => Выпонение метода WaitFor заняло 0,0020404 секунд
Запуск DDE вывода => Выпонение метода WaitFor заняло 0,0029838 секунд
Выпонение метода GetQuikWindows(Process process) заняло 0,3298589 секунд. Метод вернул 12 из 566 окон
Закрытие DDE окна => Выпонение метода WaitFor заняло 0,3300634 секунд
Запуск окна с заголовком <позиции по деривативам> занял 1,3701531 секунд
Запуск ДДЕ занял: 2,762106 секунд
XP
Запуск экспорта по ДДЕ
Выпонение метода GetQuikWindows(Process process) заняло 0,0347218 секунд. Метод вернул 15 из 263 окон
Выпонение метода GetQuikWindows(Process process) заняло 0,0358152 секунд. Метод вернул 15 из 263 окон
Выпонение метода GetQuikWindows(Process process) заняло 0,0357294 секунд. Метод вернул 16 из 264 окон
Открытие DDE окна => Выпонение метода WaitFor заняло 0,0836615 секунд
Остановка DDE вывода => Выпонение метода WaitFor заняло 0,0018648 секунд
Запуск DDE вывода => Выпонение метода WaitFor заняло 0,0039082 секунд
Выпонение метода GetQuikWindows(Process process) заняло 0,0349754 секунд. Метод вернул 15 из 263 окон
Закрытие DDE окна => Выпонение метода WaitFor заняло 0,0351794 секунд
Запуск окна с заголовком <инструменты> занял 0,1647161 секунд
Выпонение метода GetQuikWindows(Process process) заняло 0,036516 секунд. Метод вернул 15 из 263 окон
Выпонение метода GetQuikWindows(Process process) заняло 0,0351818 секунд. Метод вернул 15 из 263 окон
Выпонение метода GetQuikWindows(Process process) заняло 0,0350804 секунд. Метод вернул 16 из 264 окон
Открытие DDE окна => Выпонение метода WaitFor заняло 0,0727249 секунд
Остановка DDE вывода => Выпонение метода WaitFor заняло 0,0012032 секунд
Запуск DDE вывода => Выпонение метода WaitFor заняло 0,0029322 секунд
Выпонение метода GetQuikWindows(Process process) заняло 0,0363536 секунд. Метод вернул 15 из 263 окон
Закрытие DDE окна => Выпонение метода WaitFor заняло 0,0365615 секунд
Запуск окна с заголовком <позиции по деривативам> занял 0,1561724 секунд
Запуск ДДЕ занял: 0,320936 секунд
- Удалось локализовать функцию, которая тормозит. - Это AllToplevelWindows, эта функция вызывается в S# для получения списка окон квика.- AllToplevelWindows в свою очередь вызывает из библиотеки ManagedWinapi.dll функцию FilterToplevelWindows.
- В тестах видно, что AllToplevelWindows в висте возвращает гораздо большее количество окон 565 чем в XP 263. Интересно, что удаление значков из трея в висте значительно уменьшило количество окон (565 скатилось до 415) и работа с окнами в моем случае стала работать примерно в 2 раза быстрее. Но если наоткрывать вкладок в браузере, то скорость очень значительно снижается.
- Я вывел заголовки окон в висте и XP, в висте оказалось гораздо больше пока непонятных окон без заголовков (330), чем в XP, где такие тоже имеются, но их меньше 152.
- Пока это все, что удалось выяснить. Если у кого-то есть идеи и мнения на этом этапе, которые смогут ускорить процесс решения проблемы, пишите, пожалуйста.