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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2015, 15:33   #1
Чудо-программист
Форумчанин
 
Регистрация: 22.07.2015
Сообщений: 138
По умолчанию Можно ли как-то ускорить паскалевские циклы?

Пытаюсь программировать графику в турбо паскале.
Столкнулся с тем, что
Код:
Move(Screen1^, Screen, SizeOf(Screen1))
работает раз в десять быстрее, чем
Код:
for J := 0 to ScreenMaxY do
  for I := 0 to ScreenMaxX do
    Screen[J, I] := Screen1^[J, I]
Можно ли ускорить второй вариант, оставаясь в рамках паскаля?
)))
Чудо-программист вне форума Ответить с цитированием
Старый 13.08.2015, 15:49   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А move не в рамках турбо паскаля?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.08.2015, 15:54   #3
Чудо-программист
Форумчанин
 
Регистрация: 22.07.2015
Сообщений: 138
По умолчанию

В рамках, но я хочу слой с прозрачным цветом.
)))
Чудо-программист вне форума Ответить с цитированием
Старый 13.08.2015, 17:22   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Можно. Если перейти на С++. Давайте не будем задавать глупых вопосов. Самый быстрый язык это - Асм. Все остальные, тормозят в той или иной степени.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 13.08.2015 в 17:25.
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.08.2015, 17:54   #5
Чудо-программист
Форумчанин
 
Регистрация: 22.07.2015
Сообщений: 138
По умолчанию

За счет чего тормозят циклы в Паскале?
)))
Чудо-программист вне форума Ответить с цитированием
Старый 13.08.2015, 21:53   #6
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
По умолчанию

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

Как мерял-то?) В общем попробуй сперва без вложенного цикла, а потом развернуть, по 4 операции обычно делают.
ResourceSpace вне форума Ответить с цитированием
Старый 13.08.2015, 22:30   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Правильно Вам сказали. Циклы тут не виноваты.
Ради прикола разверните их. (Получите огромное кол-во строк) Но этот код будет работать несильно лучше.
Poma][a вне форума Ответить с цитированием
Старый 13.08.2015, 22:41   #8
Чудо-программист
Форумчанин
 
Регистрация: 22.07.2015
Сообщений: 138
По умолчанию

Разве развертка циклов еще действует? Я думал, это прием спектрумистов.
)))
Чудо-программист вне форума Ответить с цитированием
Старый 13.08.2015, 23:54   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Ручками разверните.
Screen[0, 0] := Screen1^[0, 0];
Screen[0, 1] := Screen1^[0, 1];
Poma][a вне форума Ответить с цитированием
Старый 14.08.2015, 01:05   #10
Чудо-программист
Форумчанин
 
Регистрация: 22.07.2015
Сообщений: 138
По умолчанию

Попробую завтра.
Только я для такого сделаю Screen и Screen1 линейными, а то вдруг он на индексации много теряет.
)))
Чудо-программист вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем можно заменить или как ускорить TImageList? garuna Общие вопросы Delphi 10 06.12.2014 15:07
как ускорить AlexVI Общие вопросы C/C++ 10 15.07.2014 23:42
Как можно ускорить скорость макроса? staniiislav Microsoft Office Excel 7 21.12.2011 09:44
Можно ли ускорить выполнение этого кода? Velross Помощь студентам 3 07.01.2010 19:37
Можно ли как-то ускорить выполнение этого кода (обработка примечаний)? motorway Microsoft Office Excel 2 23.07.2009 17:06