Тема открыта по просьбе жителей Королевства и посвящена обсуждению вопросов оптимизации кода. Выставляйте свои лучшие и худшие тексты и не стесняйтесь их обсуждать. В споре рождается истина. Или, по крайней мере, оптимизация.
Всего в теме 737 сообщений
Добавить свое сообщение
Отслеживать это обсуждение
- Тестирование проекта. Отладка.
- Подводные камни
- Централизованная обработка ошибок
- Бета-тестирование
- Давайте учиться на ошибках.
- Почему программисты допускают ошибки?
- Автоматизированные тесты для GUI
- О системах контроля ошибок
<<<... | 727—718 | 717—708 | ...>>> Всего сообщений в теме: 737; страниц: 74; текущая страница: 2
№ 727 06-02-2012 04:09 | |
В принципе, поэкспериментировав с пересылкой данных, через eax,mm0,xmm0 пришел к выводу, что передача данных упирается в скорость шины памяти, и от выравнивания мало что зависит, т.к. при обработке массива, даже если он не выровнен, то "лишние" байты закачанные в кэш, все равно потребуются при следующей операции чтения.
Использование mm0, кстати, дает 15-20% ускорения по сравнению с eax. Использование xmm0 уже не дает ничего, что с выравниваем, что без выравнивания, отсюда и написанный выше вывод.
Однако, по существу вопроса - оптимизация нужна и использование MMX и SSE2.
На Круглом столе, к сожалению, вопросов про эти наоборы команд ничтожно мало, неужели никто не оптимизирует.
Как там с поддержкой AVX и регистров YMM в Delphi XE, никто не знает?
№ 726 03-02-2012 06:25 | |
Ответ на »сообщение 724« (fargo2)
___________________________
Косвенно к вопросу оптимизации. Касается обмена данными с процессором
Недавно опытным путем выяснил, что при включенном ALIGN=8, Delphi 7 не желает выравнивать содержимое массивов типа array of byte по границе 8.
Интересно, появился ли в новых версиях Delphi принудительный ALIGN=16 и воздействует ли он на array of byte?
Директива ALIGN задаёт максимальное значение выравнивания. Каждый тип (как встроенный, так и определённый программистом) имеет собственный Align. Для байтов и массивов байтов Align=1, поэтому директива ALIGN на их выравнивание влиять не должна.
ЗЫЖ Сто лет сюда не заходил, заглянул - никого...
№ 725 27-01-2012 05:07 | |
Естественно, имеется ввиду первый элемент массива!,
а не каждый элемент в массиве.
№ 724 24-01-2012 01:15 | |
Косвенно к вопросу оптимизации. Касается обмена данными с процессором
Недавно опытным путем выяснил, что при включенном ALIGN=8, Delphi 7 не желает выравнивать содержимое массивов типа array of byte по границе 8.
Интересно, появился ли в новых версиях Delphi принудительный ALIGN=16 и воздействует ли он на array of byte?
№ 723 25-11-2009 06:17 | |
всем доброго дня)Подскажите, пожалуйста, где можно прочитать про (Производительность ПО.Методики измерения производительности .Программные измерительные мониторы)..долго и упорно искал в интернете..но нашел слишком мало информации...пожалуйста помогите))
№ 722 16-06-2009 02:40 | |
№ 721 16-06-2009 02:00 | |
Ответ на »сообщение 720« (Игорь)
___________________________
Вопросы задаются на Круглом Столе, а не здесь.
№ 720 16-06-2009 01:29 | |
Здравствутйе.
В делфи есть иконка Timage существует ли механизм маштабирования нарисованноно изображения
Подскажите
Заранее благодарю
№ 719 27-05-2009 00:09 | |
>>>ПРОЦЕДУРА Оболочка;
>>>НАЧАЛО
>>>ВЫЗОВ ПРОЦЕДУРЫ Имя;
>>>КОНЕЦ;
>>>Итого имеем один вход и один выход.
Можно и без оболочки. Обычно от альтернативных выходов можно избавиться с помощью другой формы записи условной конструкции.
Например, "неправильную" процедуру типа:
ПРОЦЕДУРА Имя;
НАЧАЛО
ЕСЛИ условие ТО ВЫХОД
что-то...
КОНЕЦ
можно переписать так:
ПРОЦЕДУРА Имя;
НАЧАЛО
ЕСЛИ НЕ условие ТО
что-то...
КОНЕЦ ЕСЛИ
КОНЕЦ
>>>Какое же это ветвление?
>>>Это выполнение по условию.
Игра словами. Ветвление - это структура в записи алгоритма, которая обеспечивает выбор и выполнение операций в зависимости от результата проверки определенных условий.
№ 718 25-05-2009 06:27 | |
Ответ на »сообщение 717« (Как слышно? Прием!)
___________________________
Это смотря какие теоретики :)
Первый серьезный язык, моделирующий паралельные процессы, - СИМУЛа 67 имел операторы Activate, Passivate. Сохранялась точка алгоритма, из которой управление передавалось другому процессу. В нее происходил возврат при активации. Если прочертить на тексте стрелками все передачи управления между процессами, получим знакомую картину "спагетти". Activate, Passivate - аналоги GOTO для параллельных процессов.
Достаточно очевидно, что ничего, не описываемого моделью конечного автомата все равно не реализовать при таком подходе. И моделирование параллельных процессов перешло к аналогу структурного программирования - ансамблю конечных автоматов, обменивающихся сигналами.
Тогда речь шла о моделировании параллельных процессов на одном исполнителе, но идея управляющего списка легко модифицируется на произвольное число исполнителей.
<<<... | 727—718 | 717—708 | ...>>> Всего сообщений в теме: 737; страниц: 74; текущая страница: 2
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|