Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2010, 13:32   #1
Velross
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 10
По умолчанию Можно ли ускорить выполнение этого кода?

Задача такая:
В БД, по мимо прочих, имеются поля: № листа (max. 100), № стороны листа (1 или 2), № карточки (1 или 2), необходимо организовать экспорт записей в word-шаблон в порядке значений в этих полях, т.е.:
1 1 1
1 1 2
1 2 1
1 2 2
2 1 1
..........
100 2 2
Все выбранные для экспорта записи я загоняю в двухмерный массив, где переменная CountRecordAll отвечает за кол-во записей в первой размерности массива, вторая размерность постоянна - 35 записей.
Для вывода на экспорт использую такую конструкцию, но она работает слишком медленно.

Примечание: в массиве на 25 месте находиться значение №листа, на 26 - №стороны, на 27-№карточки.

PHP код:
for i:=1 to 100 do begin
  
for y:=1 to 2 do begin
    
for z:=1 to 2 do begin
      
for d:=0 to CountRecordAll-do begin
      
if (mas_kartoteka[d][25]=IntToStr(i)) and (mas_kartoteka[d][26]=IntToStr(y)) and (mas_kartoteka[d][27]=IntToStr(z)) then
      begin
        
if CreateWord then begin
        VisibleWord
(false);
        if 
OpenDoc(SetDir+'\Шаблоны\'+ComboBoxShablon.Text) then begin
        ................................................................
        ................................................................       
        SaveDocAs(SetDir+'
\Картотека\'+IntToStr(i)+IntToStr(y)+IntToStr(z)+'.doc');
        CloseWord;
        break;
        end;
        end;
      end;
      end;
    end;
  end;
end; 
Если знаете как ускорить код, подскажите пожалуйста.

Последний раз редактировалось Velross; 07.01.2010 в 13:35.
Velross вне форума Ответить с цитированием
Старый 07.01.2010, 13:52   #2
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

используй ассемблерные вставки
fbus вне форума Ответить с цитированием
Старый 07.01.2010, 15:47   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Можно циклы развернуть, это должно поднять быстродействие. Например те, что два раза выполняются убрать и расписать вручную, а тот что 100 написать как до 50 и продубрировать то что внутри. Это увеличит код программы, зато должно поднять быстродействие. также в
Код:
if (mas_kartoteka[d][25]=IntToStr(i)) and (mas_kartoteka[d][26]=IntToStr(y)) and (mas_kartoteka[d][27]=IntToStr(z)) then
думаю лучше будет делать не IntToStr над i, а StrToInt над mas_kartoteka, так как целые сравниваются быстрее чем строки, а преобразование что из целого в строку, что из строки в целое примерно одинаково
netrino вне форума Ответить с цитированием
Старый 07.01.2010, 19:37   #4
Velross
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 10
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
Можно циклы развернуть, это должно поднять быстродействие.
....
думаю лучше будет делать не IntToStr над i, а StrToInt над mas_kartoteka,
Спасибо за совет, попробую.
Velross вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
.htaccess запрет на выполнение кода wall66 PHP 3 11.08.2009 10:54
Можно ли как-то ускорить выполнение этого кода (обработка примечаний)? motorway Microsoft Office Excel 2 23.07.2009 17:06
Как ускорить работу этого макроса? Neo007 Microsoft Office Excel 1 22.06.2009 18:14
Выполнение кода из файла.. NSvirus Паскаль, Turbo Pascal, PascalABC.NET 25 14.06.2009 00:56
Как ускорить выполнение макросов tat-besidovska Microsoft Office Excel 1 22.01.2008 12:12