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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2011, 21:56   #1
0479
Форумчанин
 
Аватар для 0479
 
Регистрация: 27.09.2009
Сообщений: 153
По умолчанию Оптимизация программы

Доброго времени суток.Возник вопрос.Если нужно оптимизировать программу не вдаваясь в подробности программного кода , точнее ускорить её работу. Каким образом это можно сделать.Говорят что известно около пяти методов. Если кто то знает в каком направлении нужно смотреть подскажите пожалуйста. Предположительно изменить типы переменных на менее ёмкие исключить внутренние циклы.Однако если кто то может предложить что то более умное поделитесь пожалуйста соображениями.
0479 вне форума Ответить с цитированием
Старый 08.03.2011, 22:48   #2
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Ассемблерные вставки.
*PB* вне форума Ответить с цитированием
Старый 08.03.2011, 23:05   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Воспользуйтесь гуглом, очень много статей на эту тему есть.
Начиная от специальным образом составленного кода, до ключей компилятора и параллелизации. Но вообще, это зависит от решаемой задачи
netrino вне форума Ответить с цитированием
Старый 09.03.2011, 00:15   #4
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Цитата:
Сообщение от 0479 Посмотреть сообщение
Предположительно изменить типы переменных на менее ёмкие
Вот один источник.
А так:
Цитата:
Сообщение от netrino Посмотреть сообщение
...вообще, это зависит от решаемой задачи
причём бывает, что очень сильно.
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 09.03.2011, 00:25   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

и причем асм не панацея.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.03.2011, 09:14   #6
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
и причем асм не панацея.
Крис Касперски говорит, что есть такое понятие как неэффективный код ассемблера. То есть оптимизирующие компиляторы порой справляются сами довольно неплохо. При неграмотном подходе можно и ухудшить показатели скорости.

ЗЫ: Я после прочтения этих строк - перестал думать об ассемблере в своих программах. Чтобы зря много времени не потратить на его изучение.
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 09.03.2011, 14:30   #7
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
Сообщение от 0479 Посмотреть сообщение
оптимизировать программу не вдаваясь в подробности программного кода ... кто то может предложить что то более умное
Поставить программу на более мощный компутер

Цитата:
Сообщение от xwicked Посмотреть сообщение
...неэффективный код ассемблера. То есть оптимизирующие компиляторы порой справляются сами довольно неплохо. При неграмотном подходе можно и ухудшить показатели скорости.
Согласен, даже примеры видел где действительно иногда асм уступает свои позиции.
Цитата:
ЗЫ: Я после прочтения этих строк - перестал думать об ассемблере в своих программах. Чтобы зря много времени не потратить на его изучение.
Даже если не требуется, например, работать с железом на низком уровне, порой без ассемблера никак (или сложновато), функции ведь - это вещи более или менее универсальные, а порой нужны лишь их частные случаи.

По теме, не вдаваясь в подробности много не наоптимизируешь. Не всегда уменьшение размера переменных приводит к ускорению. Тут самое главное сначала алгоритм оптимальный выбрать, а уж потом смотреть что да как. Вобщем универсального рецепта нет (ИМХО, конечно), в каждом коде свои особенности (ну прям как у людей ).
eoln вне форума Ответить с цитированием
Старый 09.03.2011, 17:15   #8
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
оптимизировать программу не вдаваясь в подробности программного кода
Оригинально, ну тогда есть один отличный совет: если ваша программа работает медленно — вы что-то делаете неверно, попробуйте другой подход. Для начала нужно хотя бы выяснить источник тормозов, для этого существуют профилировщики, иначе можно до посинения оптимизировать участок кода, который выполняется один раз за 2 мс

Ну из очевидного:
  • оптимизировать всегда сверху вниз, т.е. оптимизация алгоритма -> оптимизация реализации средствами языка -> средствами платформы ("этот ваш ассемблер")
  • статические переменные не требуют выделения памяти вообще, память в стеке выделяется (и заканчивается) быстро, в куче - медленно
  • обращение к массивам быстрее деревьев/хеш-таблиц только в случае последовательного доступа (процессор "зачёрпывает" соседние ячейки и те оседают в кэш, т.о. обращение к нескольким следующим происходит очень быстро, но рандомный доступ практически эквивалентен обращению по указателю).
  • отложенный ввод-вывод (записать/прочитать большой объём данных на диск 1 раз быстрее, чем много раз по чуть-чуть)
  • экономить на размерах переменных/структурах данных вообще нет смысла (packed record, byte и пр.), если не стоит задача одновременно грузить десяток миллионов таких записей в память
  • в делфях не передавать больше 3 параметров в процедуры, работающие в цикле (модель вызова fastcall, в других языках м.б. по-другому), убирать лишний код и использовать inline-процедуры (это когда компилятор вставляет тело процедуры вместо её вызова). Ну и, разумеется, циклы внутри процедуры лучше процедур внутри цикла.
пыщь
JTG вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация программы Lenya Помощь студентам 2 05.01.2011 18:56
Оптимизация программы!!! $T@LKER Общие вопросы Delphi 10 08.08.2010 21:23
Оптимизация кода программы insi Фриланс 2 17.05.2008 18:30