C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: скорость вывода из Builder в Excel  (Прочитано 3142 раз)
forester
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 9


« : 27 Март 2015, 14:57:54 »

добрый всем!

столкнулся с кардинально разной, на порядок, скоростью вывода данных из аксессовской базы в excel. а кампутеры по железу примерно одного класса.
посмотрел, данные из аксесса селектятся быстро.
а в екселе выглядит так:
функция вывода условно говоря выглядит так:
range
merge
value

на одном аппарате выполнение выглядит так:
13:23:19.488->Стартую PushValue
13:23:19.500->Затрачено на Range 00:00:00.012
13:23:19.500->Затрачено на Merge00:00:00.000
13:23:19.502->Затрачено на вывод Value00:00:00.002
13:23:19.502->Финиширую PushValue, всего затрачено на вывод 00:00:00.014

на другом вообще засечь не успевает некоторых
13:23:33.122->Стартую PushValue
13:29:33.122->Затрачено на Range 00:00:00.000
13:29:33.122->Затрачено на Merge00:00:00.000
13:29:33.122->Затрачено на вывод Value00:00:00.000
13:29:33.122->Финиширую PushValue, всего затрачено на вывод 00:00:00.000

в какую сторону следует порыть и померять?
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


« Ответ #1 : 27 Март 2015, 15:26:21 »

Если речь идет про микросекунды (как показано), то это не кардинально разная скорость.
Условия для сравнения должны быть одинаковыми (ОС, железо, версия Excel).
Записан
forester
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 9


« Ответ #2 : 30 Март 2015, 06:56:57 »

операционные системы примерно одинаковы - win xp prof.
процессоры, винты, оперативная память - примерно одного класса.
версии excel видимо да, разные.

собственно, смущает на порядок разная скорость вывода.
как можно измерить, в каком месте происходит торможение?
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


« Ответ #3 : 30 Март 2015, 07:13:36 »

операционные системы примерно одинаковы - win xp prof.
процессоры, винты, оперативная память - примерно одного класса.
версии excel видимо да, разные.

собственно, смущает на порядок разная скорость вывода.
как можно измерить, в каком месте происходит торможение?

Например, поставь точки останова и запускай в режиме отладки - увидишь, сколько времени проходит между точками.
Другой способ - внедри отметки в сам код, с выводом времени после выполнения каждой операции (можно, например, писать время в файл).
Записан
forester
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 9


« Ответ #4 : 30 Март 2015, 07:31:19 »

собственно, я так и делаю - в первом в этой теме моём сообщении и показан вывод из файла ,в который трассировка и сбрасывается, кусочки с разных машин.
и вот вижу что операция Range по времени выполнения отличается.
и куда двигаться дальше? как пооптимизироваться?

Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


« Ответ #5 : 30 Март 2015, 13:03:17 »

1. Можно подробнее - какой именно код используется для вызова функции Range? (Или имеется в виду свойство Range?)
2. Можно попробовать установить одинаковую версию Excel и потестировать. Наиболее вероятно, что отличие именно в разной версии Excel.
Записан
forester
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 9


« Ответ #6 : 30 Март 2015, 13:41:44 »

1. делаю Range так vtmp = sheet.OlePropertyGet("Range", RC.c_str());
2. пока другую сторону трогать не хочется - таки начальство, далеко физически, и с администрированием там тяжко.
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


« Ответ #7 : 30 Март 2015, 15:39:45 »

Судя по виду вызываемого метода OlePropertyGet, у тебя довольно старая версия Билдера (6?) - в более новых версиях строковые аргументы имеют тип WideString и wchar_t*.

К сожалению, без тестирования в одинаковых условиях ничего оптимизировать не получится, т.к. задержка зависит от внутренней реализации OLE сервера Excel. Т.е. нет никакого способа извне повлиять на реализацию получения свойства Range.
Записан
forester
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 9


« Ответ #8 : 13 Апрель 2015, 07:29:25 »

да, вы правы, у меня Билдер древний, 6.
попробовал на разных windows. на моём аппарате centrino, xp работает более-менее. на i5 win8 жуткие тормоза при выводе.
качаю триальный C++Builder XE8. 
Записан
forester
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 9


« Ответ #9 : 13 Апрель 2015, 14:25:47 »

кстати подскажите пожалуйста, как бороться с открытием проекта сделанного в builder6 в builderxe8?
скачал и штатно установил триал, при открытии проекта пишет "класс не зарегистрирован"
« Последнее редактирование: 13 Апрель 2015, 14:30:52 от forester » Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


« Ответ #10 : 15 Апрель 2015, 15:41:09 »

кстати подскажите пожалуйста, как бороться с открытием проекта сделанного в builder6 в builderxe8?
скачал и штатно установил триал, при открытии проекта пишет "класс не зарегистрирован"

Обычно так бывает, если в проекте есть сторонние или самописные компоненты. Если стандартный VCL проект (только со встроенными компонентами), то такого быть не должно по идее.
Записан
forester
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 9


« Ответ #11 : 16 Апрель 2015, 14:31:24 »

builder enterprise, похоже лицензионный, специально ничего самодельного не ставилось.
сначала неустривал F8FEDD39-E3CE-4B8D-A657-9CA24686881F, лечится.
затем 1D7A3F34-1388-420D-932F-D16FBA1858A2 - как лечить не знаю, но что-то мне этот путь не нравится...

неужто придётся заново проект собирать, заново формируя bpr? 
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


« Ответ #12 : 20 Апрель 2015, 12:29:38 »

неужто придётся заново проект собирать, заново формируя bpr? 

Именно это я и делал несколько раз, когда апдейтил свои старые проекты с BCB6 на XE3.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.129 секунд. Запросов: 21.