Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++: COM, OLE, ActiveX

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
kirins
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 5
#1

Word automation + Windows server 2008 R2 = тормоза(очень сильные тормоза) - C++ COM

03.04.2013, 11:50. Просмотров 1394. Ответов 9
Метки нет (Все метки)

Здравствуйте!

Есть код, написанный правда на делфи, который экспортирует содержимое ТХТ файла в DOS кодировке в WORD. Попутно, если это необходимо, в экпортируемый текст вставляется штрих код для последующей идентификации документа. Так вот.... Данная программка прекрасно работает на следующих операц. системах - Win XP, Win 7, Win2003. Но при работе под Win 2008 server R2 получаем тормоз причем "конкретный". Простое открытие текстового файла с преобразованием кодировки на Win XP, Win 7, Win2003 происходит практически мнгновенно, а на Win 2008 server R2 получаем время 7-8 сек. А если в много страничный документ надо встроить штрих код, который проставляется на каждой странице, то ожидание формирования документа под Win 2008R2 затягивается на ~4мин против 6-7 сек. под управлением других операционок. Может кто сталкивался с данной проблемой.
Использую WORD 2007. Пробовал ставить WORD 2010- результат тот же....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2013, 11:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Word automation + Windows server 2008 R2 = тормоза(очень сильные тормоза) (C++ COM):

Сильные тормоза компьютера - Удаление вирусов
Системе чуть не хватает до года. Захламлена, куча установленного и удаленного софта, а потому ужасно тормозит... даже если ничего не...

Сильные тормоза при работе с потоком - C#
static void Main(string args) { getProcess(); Thread t = new Thread(reader); t.Start();...

Сильные тормоза компьютера. Грузит проц - Удаление вирусов
Доброго времени суток. Мне знакомый дал свой компьютер "почистить" т.к. говорит вдруг резко начал тормозить, видео не посмотреть, музыку не...

Сильные тормоза при запуске системы - Windows 7
Здравствуйте.У знакомого проблемы с Вин 7.Вечером сидел в интернете волшебным образом не заметил как отключился антивирус и вследствии...

Сильные тормоза при подключении монитора - Ремонт ноутбуков
Доброго времени суток. Имею в использовании ноутбук asus n56 и монитор AOC с FullHD разрешением. Подключаю монитор к ноутбуку через...

Перестал работать банк клиент, сильные тормоза - Удаление вирусов
Комп тормозит есть подозрение что сидит какая то гадость помогите.

9
vxg
Модератор
3199 / 2002 / 230
Регистрация: 13.01.2012
Сообщений: 7,754
03.04.2013, 12:03 #2
если есть код - запустить в режиме отладки и поглядеть где место с тормозами
0
kirins
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 5
03.04.2013, 12:17  [ТС] #3
Вот кусок кода который ищет в тексте "маячок" и преобразует цифры в другой шрифт(шрифт штрих кода), он хоть на делфи но читается легко:
Delphi
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
while true do
     begin
       Docum.ActiveWindow.Selection.Find.ClearFormatting;
       Docum.ActiveWindow.Selection.Find.Text := WideString(chr(27)+'EAN');
 
       if Docum.ActiveWindow.Selection.Find.Execute(EmptyParam,EmptyParam,EmptyParam,EmptyParam,
           EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                                               EmptyParam,EmptyParam,EmptyParam,EmptyParam) = false then Break;
       Docum.ActiveWindow.Selection.End := Docum.ActiveWindow.Selection.End + 4;
       str := Docum.ActiveWindow.Selection.Text;
       len := StrToInt(Copy(str,5,2));
       size := StrToFloat(Copy(str,7,2));
       Docum.ActiveWindow.Selection.End := Docum.ActiveWindow.Selection.End + 1;
       Docum.ActiveWindow.Selection.Delete;
    
       Docum.ActiveWindow.Selection.End := Docum.ActiveWindow.Selection.End + len;
       Docum.ActiveWindow.Selection.CreateTextbox;
       Docum.ActiveWindow.Selection.ShapeRange.TextFrame.AutoSize := true;
       Docum.ActiveWindow.Selection.ShapeRange.TextFrame.WordWrap := False;
 
       Docum.ActiveWindow.Selection.ShapeRange.TextFrame.MarginLeft := 0;
       Docum.ActiveWindow.Selection.ShapeRange.TextFrame.MarginRight := 0;
       Docum.ActiveWindow.Selection.ShapeRange.TextFrame.MarginTop := 0;
       Docum.ActiveWindow.Selection.ShapeRange.TextFrame.MarginBottom := 0;
       Docum.ActiveWindow.Selection.WholeStory;
       Docum.ActiveWindow.Selection.Font.Name := 'C39HrP24DhTt'; //'EanGnivc';
       Docum.ActiveWindow.Selection.Font.Size := size;
       Docum.ActiveWindow.Selection.ShapeRange.WrapFormat.AllowOverlap := True;
       Docum.ActiveWindow.Selection.ShapeRange.WrapFormat.Side := wdWrapBoth;
       Docum.ActiveWindow.Selection.ShapeRange.WrapFormat.DistanceTop := 0;
       Docum.ActiveWindow.Selection.ShapeRange.WrapFormat.DistanceBottom := 0;
       Docum.ActiveWindow.Selection.ShapeRange.WrapFormat.DistanceLeft := 0;
       Docum.ActiveWindow.Selection.ShapeRange.WrapFormat.DistanceRight := 0;
       Docum.ActiveWindow.Selection.ShapeRange.WrapFormat.Type := 3;
       Docum.ActiveWindow.Selection.ShapeRange.Line.Visible := False;
       Docum.ActiveWindow.Selection.HomeKey(Unit:=wdStory);
     end;
Замерил скорость выполнения данного куска - Время выполения одного прохода менее полусекунды под WinXP, Win7, Win2003 и ~8 сек. под Win 2008 R2. Что сие может значить?

Конкретного тормоза в какойлибо строке не обнаружено. Просто каждое действие под Win2008 делается более медленно.
0
vxg
Модератор
3199 / 2002 / 230
Регистрация: 13.01.2012
Сообщений: 7,754
03.04.2013, 12:36 #4
мб попробовать заменить Docum.ActiveWindow.Selection на переменную?
0
kirins
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 5
05.04.2013, 10:09  [ТС] #5
Получается дело как бы и не в операционке. Т.к. установив её(Win 2008) на обычный комп( Pentium G620, RAM 2Gb ) получил время формирования 4-5 сек. Установил Win2003 на сервер - два четырех ядерных XEONa, RAM 16Gb, Raid - получил время формирования ~4мин.

В общем по результатам экспериментов выявлено что Word automation адекватно работает только на обычных DESKTOPах (обычние бытовые компьютеры), как только пытаемся работать на какой либо серверной платформе получаем тормоз...
0
vxg
Модератор
3199 / 2002 / 230
Регистрация: 13.01.2012
Сообщений: 7,754
05.04.2013, 10:28 #6
все же попробуйте свернуть кучу точек в одну переменную. может на серве указатели очень длинные и он их разрешает долго.
0
kirins
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 5
05.04.2013, 10:36  [ТС] #7
Данную оптимизацию сделал вчера вечером. Получил почти двукратное сокращение времени формирования. С четырех минут до почти двух минут. Но как получается это не решает проблему. Две минуты тоже очень долго, против двух- трех секунд на обычном десктопе.
0
vxg
Модератор
3199 / 2002 / 230
Регистрация: 13.01.2012
Сообщений: 7,754
05.04.2013, 11:20 #8
но! вы видите, что в этом что-то есть. дальнейшую свертку пробовали делать? я имею ввиду конструкции вида .ShapeRange.TextFrame так же заменять на одну ссылку. то есть что бы везде где используется "трехэтажный" доступ стояли простые ссылки и был доступ только к полям.
0
kirins
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 5
05.04.2013, 15:24  [ТС] #9
VXG - доработку предложенную Вами я сделал еще вчера.

Удалось сократить время формирования до 45 сек, но это больше напоминает "подгон под ответ" чем сколь нибудь рабочее решение: MsWord.Visible:= True плюс MsWord.ScreenUpdating:= False плюс приоритет потока работающего с ВОРДом - tpHighest....

Может быть скажу глупость, конечно, но возникает ощущение того что на скорость формирования документа сильно влияет видеоподсистема установленная на компьютере, но проверить это смогу только в понедельник. На сереверах стоят видекарты по принципу - лишь бы что то показывало.....
0
vxg
Модератор
3199 / 2002 / 230
Регистрация: 13.01.2012
Сообщений: 7,754
05.04.2013, 15:28 #10
видеосистема влияет само собой если вы делаете нечто что отображается на экране. делайте все в невидимом документе. хотя не факт что поможет.
0
05.04.2013, 15:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2013, 15:28
Привет! Вот еще темы с ответами:

Сильные тормоза при загрузке WinXP SP2 - Windows XP
Народ, помогите советом! После входа в Windows ноутбук словно бы впадает в тупняк и начинает чего-то ждать. "Мой компьютер" не...

Сильные тормоза в запросе при формировании суммы - Oracle
Таблица имеет примерно 20 млн записей, проблема - тормозит в более удобном случае при формировании динамических запросов Запрос...

Сильные тормоза, не работает Exel и антивирус (логи в приложении) - Удаление вирусов
Здравствуйте! Последнее время компьютер сильно тормозит (некий процесc svhost сильно загружает память, его дамп не пишется) (перед сбором...

Сильные тормоза в работе браузеров, реклама в соц.сетях - Удаление вирусов
Добрый день. Столкнулся с проблемой рекламы в соц сетях и тормозов в работе браузера. логи:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.