Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
объём данных небольшой,
1500 строк, 460 Кб данных, пишет 15 минут. Антивирус отключен.
обычным обращением к ячейкам (да, я знаю что правильней писать блоком)
Но та же программа, запущенная на машине с офисом 2003 отрабатывает за 26 секунд
Примерно столько же на офисе 2010.

Вопрос -
1) Сталкивались ли с таким
2) Можно ли лечить
3) Какого лешего :)
13 ноя 20, 13:41    [22231384]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31768

use RANGE, luke!

Posted via ActualForum NNTP Server 1.5

13 ноя 20, 13:46    [22231389]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Мимопроходящий,

это понятно.
хотя не всегда возможно (на лист вставляется куча формул)

ну и вопрос не в том.
13 ноя 20, 13:57    [22231397]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31768

13.11.2020 13:57, _avz пишет:
> это понятно.
> хотя не всегда возможно (на лист вставляется куча формул)

одно другому не третье!

Posted via ActualForum NNTP Server 1.5

13 ноя 20, 14:02    [22231402]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
booby
Member

Откуда:
Сообщений: 2254
_avz,

для твоих объемов считай, что все, что больше 10 секунд - недопустимо медленно,
независимо от версии Excel и способа его заполнения.

А так да, в каждой следующей версии Excel как com-сервер меняет свои характеристики.
Что-то становится немного быстрее, а что-то может стать и много хуже.
В среднем, в режиме удаленного ole-сервера, замедление есть...

Идея любого ускорения в этом месте строится на базе укрупнения объемов взаимодействия между процессами.
Например, создай спец. надстройку в Excel специально предназначенную для взаимодействия с твоей программой.
Данные ей отдавай, слепляя их в строки или вообще внешним файлом.
Ее и протестировать можно будет в режиме работы "сама с собой".

В таком случае, у тебя оценка появится приемлемости качества кода самой надстройки.
Так, не зная деталей, методом пол-потолок, можно предложить считать, что пока такая надстройка работает медленнее, чем за 5 секунд
работает на 2013 "сама с собой" - ее код почти наверно неприемлем.

Реальность может как-то подправить эту оценку от впятеро вниз (1 сек) до вдвое вверх (10 сек).
Вообще, код показывай, почти наверно там нелепость какая-то...

Сообщение было отредактировано: 13 ноя 20, 14:20
13 ноя 20, 14:23    [22231421]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
booby
Member

Откуда:
Сообщений: 2254
_avz,

разрядность приложения и версии excel соответствуют друг другу?
Если нет - у тебя при передаче данных, вообще говоря возникает трасляция адресов.
Это само по себе может сильно влиять при частых мелких взаимодействиях...
13 ноя 20, 14:29    [22231429]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26836
_avz
1500 строк, 460 Кб данных, пишет 15 минут.

Если пулять сразу одним махом, то счет пойдет на мс.
13 ноя 20, 15:16    [22231462]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13599
_avz
хотя не всегда возможно (на лист вставляется куча формул)
И формулы так же вставляй.
13 ноя 20, 15:25    [22231470]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
booby
_avz,

разрядность приложения и версии excel соответствуют друг другу?

обе 32
booby

Вообще, код показывай, почти наверно там нелепость какая-то


код, конечно, ленивый и банальный.

  while not датасет.Eof do
  begin
     for  все поля
        лист.Cells.Item[строка, колонка] := датасет.поле[i];
     датасет.Next
  end
  // Вместо того чтоб лист.Range[адрес] := массив


на лист.Range[адрес] := массив я конечно перепишу, где можно.
вопрос в том, почему во столько раз медленней, чем в ранних версиях офиса.
Наш сисадмин подсказал подкрутить настройки Excel, и, надо же, удалось 14 мин ускорить до 13 с половиной. :)

Сообщение было отредактировано: 13 ноя 20, 16:05
13 ноя 20, 16:03    [22231502]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Соколинский Борис
_avz
хотя не всегда возможно (на лист вставляется куча формул)
И формулы так же вставляй.


то есть можно вместо
лист.Range[адрес].FormulaR1C1 := '=SUM(...)'
также писать в массив[i, j] '=SUM()' и это сработает?
ок, попробую.
13 ноя 20, 16:07    [22231504]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13599
_avz

также писать в массив[i, j] '=SUM()' и это сработает?
Так вряд ли.
 лист.Range[адрес].FormulaR1C1 := '=SUM(...)'

"адрес" тут может быть не одной ячейкой.
13 ноя 20, 16:15    [22231514]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Соколинский Борис,

не, у меня идут индивидуальные формулы для ячеек.
13 ноя 20, 16:18    [22231519]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
L_argo
Member

Откуда:
Сообщений: 1297
Насколько помню работа с формулами как-то отличается в разных версиях.
Т.е. может работать или не работать.
Это проблема, когда у конечных пользователей разные версии экселя.
13 ноя 20, 16:22    [22231524]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13599
_avz,
Формулы на лету вставлять вообще не есть хорошо.
Лучше шаблон заготовить.
13 ноя 20, 16:22    [22231525]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31768

13.11.2020 16:03, _avz пишет:
> на лист.Range[адрес] := массив я конечно перепишу, где можно.

ты удивишься на сколько оно тупит БЕЗ массивов.
реально.

Posted via ActualForum NNTP Server 1.5

13 ноя 20, 16:25    [22231531]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Соколинский Борис
_avz,
Формулы на лету вставлять вообще не есть хорошо.
Лучше шаблон заготовить.

Там непонятно, на какой строке будет сумма.
там что такое: '=SUM(R[-236]C;R[-123]C;...R[-1]C)' или =sum(R[-236]C:R[-1]C)
где 236, 123 - вычисляются по ходу дела
13 ноя 20, 16:29    [22231534]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Мимопроходящий

13.11.2020 16:03, _avz пишет:
> на лист.Range[адрес] := массив я конечно перепишу, где можно.

ты удивишься на сколько оно тупит БЕЗ массивов.
реально.


Я знаю.
тут просто такая специфика данных.

блок1
пять строк, промежуточная сумма 1
три строки, промежуточная сумма 2
суммы по блоку1

блок2
... та же хрень
суммы по блоку2

то есть будет много обращений типа лист.Rangе :=массив, а не одно, как хотелось бы.
раз в N меньше, чем сторок, где N < 10
т.е. ускорение в N раз, N < 10

Сообщение было отредактировано: 13 ноя 20, 16:30
13 ноя 20, 16:35    [22231541]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13599
_avz,
Сделай формулы для именованного диапазона, а после выгрузки данных задай его адрес.
Поищи по форуму RefersTo я выкладывал образцы

(глядя на последний пост)
и открой для себя функцию "Промежуточные итоги"

Сообщение было отредактировано: 13 ноя 20, 16:32
13 ноя 20, 16:36    [22231542]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13599
_avz,
Кстати, у тебя именно из-за формул может тормозить. Отключи AutoCalculate перед началом выгрузки и включи по окончанию.
13 ноя 20, 16:40    [22231547]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Соколинский Борис
_avz,
Сделай формулы для именованного диапазона, а после выгрузки данных задай его адрес.
Поищи по форуму RefersTo я выкладывал образцы

(глядя на последний пост)
и открой для себя функцию "Промежуточные итоги"

это да :)
13 ноя 20, 16:46    [22231554]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Соколинский Борис
_avz,
Кстати, у тебя именно из-за формул может тормозить. Отключи AutoCalculate перед началом выгрузки и включи по окончанию.
больше всего тормозит код без формул, признаю. там на самом деле всё разрулится массивами.

Но всё-таки почему между 2013 и 2010 такая разница?

Интересно же.
И мне просто хотелось найти в Excel 2013 "волшебный флажок", чтоб всё было "как раньше" :)

Наш сисадмин пока не нашёл.
13 ноя 20, 16:50    [22231557]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2795
Соколинский Борис
_avz,
Кстати, у тебя именно из-за формул может тормозить. Отключи AutoCalculate перед началом выгрузки и включи по окончанию.
больше всего тормозит код без формул, признаю. Там на самом деле всё разрулится массивами.

Но всё-таки почему между 2013 и 2010 такая разница?

Интересно же. Что там они в MS так испортили, чистое любопытство.
И мне просто хотелось найти в Excel 2013 "волшебный флажок", чтоб всё было "как раньше" :)

Наш сисадмин пока не нашёл.

Сообщение было отредактировано: 13 ноя 20, 16:48
13 ноя 20, 16:52    [22231558]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 13599
_avz

Интересно же. Что там они в MS так испортили, чистое любопытство.
По-моему, начиная с 2003 г. порча идет постоянно, с акцентами на разные фронты.
13 ноя 20, 17:02    [22231564]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 646
А что, использовать прямую запись (например XLSReadWriteII), получая в результате скорость записи < 1 сек, уже не в тренде?
13 ноя 20, 17:07    [22231572]     Ответить | Цитировать Сообщить модератору
 Re: Excel 2013 медленно работает как com- сервер  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31768

13.11.2020 17:02, Соколинский Борис пишет:
> По-моему, начиная с 2003 г. порча идет постоянно, с акцентами на разные фронты.

"борьба за качество закончена. началась борьба за покупателя"

(С) - CEO Sony

Posted via ActualForum NNTP Server 1.5

13 ноя 20, 17:10    [22231577]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить