Способы повышения производительности вычислений

Способы увеличения быстродействия программ

Современные ЭВМ обладают очень большой мощностью. Скорость работы процессора (ЦП) современных ЭВМ измеряется гигагерцами, объём оперативной памяти гигабайтами, а современные интерфейсы устройств обеспечивают скорость обмена данными порядка, как минимум, нескольких сотен мегабайт в секунду [1]. Производительность, которая ещё несколько лет назад казалась «сказочной» в настоящее время стала нормой жизни.

Однако параллельно росту мощности ЭВМ увеличивается и ресурсоёмкость приложений. У приложений совершенствуется функционал, интерфейс, возрастает объём обрабатываемых данных и как следствие системные требования. Поэтому вопрос об увеличении быстродействия приложений не теряет своей актуальности.

Общие вопросы быстродействия программ.

Быстродействие программ (ПО) зависит от многих факторов, но основными из них являются два:

  • Соотношение между реальными системными требованиями ПО и существующей аппаратной конфигурацией ЭВМ;
  • Алгоритмы работы ПО.

Если низкое быстродействие обусловлено первым фактором, то решением является модернизация аппаратной части (hardware). В некоторых случаях проблему можно решить также с помощью тонкой настройки hardware и операционной системы. Однако этот путь имеет ряд недостатков:

  1. Увеличивается производительность hardware, а вовсе не быстродействие ПО;
  2. Производительность hardware ограничена возможностями существующих в данный момент элементной базы и инженерных решений в данной области;
  3. Большие финансовые затраты на модернизацию и настройку по причине высокой стоимости комплектующих ЭВМ и услуг специалистов требуемой квалификации.

По этим причинам при разработке ПО прибегают к увеличению его быстродействия с помощью различных средств программной инженерии. Это позволяет:

  1. Обеспечить работу нового ПО на уже существующем оборудовании;
  2. Разработать масштабируемое ПО;
  3. Значительно уменьшить финансовые и трудовые затраты при внедрении.

Вместе с тем и у этого пути имеется ряд недостатков:

  1. Значительно усложняется процесс разработки ПО, так как более «быстрые» алгоритмы сложнее более «медленных» (на пример алгоритм бинарного поиска сложнее, чем алгоритм линейного поиска) [2];
  2. Реализация более сложных алгоритмов, как правило, требует привлечения специалистов более высокой квалификации;
  3. В случае работы с большими объёмами данных или выполнении задач требующих больших и сложных вычислений, ресурсоёмкость ПО всё равно остаются достаточно высокой. Несмотря, на какие либо способы увеличения быстродействия.

Таким образом, в общем случае обеспечение быстродействия ПО является комплексной задачей.

Однако следует заметить, что среди существующих задач, очень немногие обладают высокой ресурсоёмкостью. Вследствие этого в большинстве случаев не требуется никаких действий относительно hardware и требуемого результата можно достичь, прибегая только к программной инженерии.

Программная инженерия предоставляет несколько способов увеличения быстродействия программ. Рассмотрим их на примере языков программирования Delphi и Assembler.

Увеличение быстродействия программ.

Как было показано в предыдущем параграфе, можно увеличить быстродействие ПО соответствующим образом реализовав его алгоритмы. Количественным показателем быстродействия алгоритма (а, следовательно, и ПО) является время его выполнения, измеренное по специальной методике, так называемого профилирования [2]. Таким образом, в общем случае выбор наиболее «быстрых» алгоритмов сводится к измерению времени их выполнения и сравнении полученных результатов между собой. Такой способ анализа быстродействия является наиболее объективным [2]. На протяжении многих лет программистами был накоплен большой опыт профилирования, который позволяет сделать определённые выводы относительно возможности оптимизации быстродействия ПО ещё на стадии написания.

Эти выводы были обобщены и представлены в виде определённых рекомендаций [2, 4]. Если программист будет следовать данным рекомендациям, то написанная программа вероятнее всего будет обладать большим быстродействием, чем в случае их игнорирования. Однако следует ещё раз подчеркнуть, что достоверные сведения о быстродействии может дать только профилирование. Это обусловлено тем, что быстродействие алгоритма определяет в первую очередь его конкретная реализация. Кроме того необходимо ещё раз отметить, что в отношении увеличения быстродействия ПО программная инженерия не всесильна (см. предыдущий параграф).

Читайте также:  Способ управления государством при котором все основные

В чём же состоят выше упомянутые рекомендации? Их краткое содержание применительно к языку программирования Delphi приведено ниже.

  1. При написании кода программ рекомендуется избегать процедур, состоящих из сотен строк. Практически всегда в них можно выделить блоки, которые лучше оформить в виде отдельной процедуры. Возможно, позже вы ей даже воспользуетесь где-то в другом месте. Не говоря уже о том, что это повышает понимание программы и вами, и другими программистами. К тому же так проще искать «узкие» места в программе.
  2. Использование оператора case (switch) вместо многократных if… then… else (if… else). Во втором варианте компилятор будет выполнять проверку условия столько раз, сколько у вас вариантов. В первом проверка выполняется лишь однажды.
  3. Некоторые действия могут быть довольно продолжительными, поэтому рекомендуется выносить за рамки цикла всё, что можно выполнить вне его, чтобы избежать большого числа повторений внутри цикла.
  4. В циклах типа for нужно стараться, чтобы значение счетчика уменьшалось до нуля, а не наоборот — начиналось с нуля. Это связано с особенностями процессора. Сравнение с нулём выполняется гораздо быстрее, чем с другим числом.
  5. Пользоваться типом Variant только при необходимости. Операции над этим типом сложнее, чем, например, над Integer или String.
  6. Не злоупотреблять «программированием на компонентах». В частности не использовать компонент TTreeView для хранения древовидных структур данных — он работает очень медленно и предназначен только для визуального отображения. В случае работы со структурами данных лучше использовать алгоритмы, созданные самостоятельно на основе фундаментальных.
  7. Сохранение и загрузка свойств компонентов с помощью методов ReadComponent и WriteComponent работает довольно медленно, поэтому по возможности рекомендуется сохранять и восстанавливать состояние программы между сеансами при помощи других способов.
  8. Заменить простой в реализации алгоритм на более сложный, но с большим быстродействием. Например, если заранее известно, что в списке для поиска будет много элементов, лучше его отсортировать и применять бинарный поиск вместо линейного.
  9. В критических с точки зрения быстродействия местах программы делать вставки на ассемблере. Команды ассемблера напрямую транслируются в машинный код. Таким образом, в отличие от высокоуровневых языков при компиляции отсутствует проблема синхронизации и ряд других негативных обстоятельств.

Для других языков программирования вышеприведённый список может несколько отличаться, в частности отсутствием поддержки ассемблера и как следствие возможности оптимизации с его помощью (Java, Visual C# и др.).

Особо следует отметить, что рекомендации 3 и 4 применяются не только для языков высокого уровня, но и для ассемблера. Помимо вышеуказанных для увеличения быстродействия программ написанных на ассемблере, в том числе и вставок, существуют следующие рекомендации [3]:

  1. Замещение универсальных инструкций на учитывающие конкретную ситуацию, например, замена умножения на степень двойки на команды сдвига (отказ от универсальности).
  2. Уменьшение количества передач управления в программе: за счет преобразования подпрограмм в макрокоманды для непосредственного включения в машинный код; за счет преобразования условных переходов так, чтобы условие перехода оказывалось истинным значительно реже, чем условие для его отсутствия; перемещение условий общего характера к началу разветвленной последовательности переходов; преобразование вызовов, сразу за которыми следует возврат в программу, в переходы («сращивание хвостов» и «устранение рекурсивных хвостов») и т.д.
  3. Максимальное использование всех доступных регистров за счет хранения в них рабочих значений всякий раз, когда это возможно, чтобы минимизировать число обращений к памяти, упаковка множественных значений или флагов в регистры и устранение излишних продвижений стека (особенно на входах и выходах подпрограмм).
  4. Использование специфических для данного процессора инструкций, например, инструкции засылки в стек непосредственного значения, которая имеется в процессоре 80286 и более поздних. Другие примеры – двухсловные строковые инструкции, команды перемножения 32-разрядных чисел, деление 64-разрядного на 32-разрядное число и умножение на непосредственное значение, которые реализованы в процессорах 80386 и 80486. Программа должна, разумеется, вначале определить, с каким типом процессора она работает!
Читайте также:  Суффиксально префиксальный способ словообразования английский

Заключение.

Методы оптимизации быстродействия, рассмотренные в этой статье, были выработаны и проверены не одним поколением программистов и уже стали классическими. В то же время информационные технологии, в частности технологии программирования, постоянно развиваются. Появляются новые технологии, старые – модернизируются или уходят в прошлое. Растёт производительность аппаратной части ЭВМ и параллельно с этим растёт сложность и ресурсоёмкость выполняемых ими задач.

Поэтому вопрос оптимизации быстродействия сейчас актуален также как и много лет назад. Более того он будет также актуален и в будущем.

Список литературы и источников.

  1. Быстро и легко. Сборка, диагностика, оптимизация и апгрейд современного компьютера/ под ред. Печникова В.Н. Учебное пособие – М.: Лучшие книги, 2005;
  2. Бакнелл Д. Фундаментальные алгоритмы и структуры данных в Delphi. М.: ООО «ДиаСофтЮП»; СПб.: Питер, 2006;
  3. Дункан Р. Оптимизация программ на ассемблере./ Дункан Р.//PC Magazine/Russian Edition №1/1992;
  4. Список пропускных способностей интерфейсов передачи данных;
  5. Гапанович А. Как сделать свою программу быстрой./Компьютерра Online.

Источник

Как повысить производительность компьютера

Повышение производительности компьютера

Для повышения производительности компьютера можно использовать встроенные инструменты Windows или специальный софт. Он доступен для бесплатной загрузки и позволяет удалять лишние временные файлы, исправлять ошибки в реестре.

Способ 1: Оптимизация всей ОС

Со временем ОС неизбежно теряет свою производительность и пользователю требуется регулярно

Windows 10

Windows 10 использует различные визуальные эффекты и анимацию. Они потребляют системные ресурсы и нагружают ЦП, память. Поэтому на слабых компьютерах могут появиться заметные «подтормаживания» и зависания. Как ускорить работу ПК:

  • Отключить визуальные эффекты;
  • Убрать лишние программы из автозагрузки;
  • Удалить временные и другие «мусорные» файлы;
  • Отключить службы;
  • Настроить режим энергосбережения (особенно актуально для ноутбука).

Сделать это можно, используя системные утилиты Виндовс или специализированное программное обеспечение. Это позволит ускорить работу ПК, а в некоторых случаях избавиться от тормозов и проседания FPS в играх. Как грамотно оптимизировать Windows 10, читайте в нашей статье.

Windows 7

Со временем скорость работы любой операционной системы неизбежно падает. Окна в проводнике открываются с задержкой, во время просмотра фильмов появляются артефакты, а страницы в веб-браузере почти не грузятся. В таком случае ускорить работу компьютера на Windows 7 можно следующим образом:

  • Обновить компьютерное «железо»;
  • Удалить ненужные программы;
  • Исправить ошибки в реестре;
  • Проверить жесткий диск на битые сектора;
  • Провести дефрагментацию.
Читайте также:  Способ обеспечения обязательства по договору займа неустойка

Все это можно сделать, используя штатные инструменты Виндовс. Они устанавливаются вместе с операционной системой и доступны всем пользователям по умолчанию. Проделанные действия позволят значительно ускорить работу компьютера и снизить время запуска системы. В статье по ссылке ниже вы сможете ознакомиться с подробной инструкцией по оптимизации Windows 7.

Способ 2: Ускорение жесткого диска

На жесткий диск устанавливается операционная система и другие приложения, игры. Как и любой другой аппаратной части компьютера, у HDD есть технические характеристики, которые влияют на общую скорость работы ПК.

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

Способ 3: Ускорение видеокарты

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

  • Загрузить последнюю версию драйвера с официального сайта;
  • Изменить настройки отображения 3D-приложений;
  • Отключить вертикальную синхронизацию;
  • Установить специальный софт для оптимизации.

Иногда увеличить FPS помогает разгон. Но из-за слишком большой нагрузки видеокарта может быстро выйти из строя или сгореть. О правильном разгоне и других способах настройки GPU читайте тут:

Способ 4: Ускорение процессора

Именно тактовая частота и производительность процессора влияют на скорость работы операционной системы, время отклика приложений. Чем мощнее эти показатели, тем быстрее будут запускаться программы.

Базовые характеристики процессора не всегда являются его максимальными. С помощью специального софта его можно разогнать, тем самым избавившись от лишних тормозов и зависаний компьютера.

Способ 5: Аппаратный апгрейд

Если компьютер сам по себе уже устарел в плане технических характеристик или давно не обслуживался, все вышеприведенные рекомендации могут дать лишь незначительный прирост производительности, которого недостаточно для комфортной работы. Далее мы приведем несколько советов, предназначенных для опытной категории пользователей:

    Замените термопасту на CPU и GPU. Это несложный процесс, который защищает от перегрева и высоких температур, пагубно сказывающихся не только на сроке жизни комплектующих, но и на качестве работы всего ПК.

Не забудьте ознакомиться с рекомендациями по выбору термопасты.

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

В некоторых случаях может потребоваться покупка нового блока питания, чтобы разогнанные устройства могли без проблем потреблять необходимую мощность.

Подробнее: Как выбрать блок питания для компьютера
Замените одно или несколько комплектующих. Если хотя бы одно звено системного блока имеет низкий уровень производительности, от этого будет страдать общая мощность ПК. Первым делом необходимо протестировать основные компоненты компьютера и узнать, что требует замены.

Для грамотного выбора и установки определенных устройств рекомендуем ознакомиться со следующими статьями:

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

Помимо этой статьи, на сайте еще 12422 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Источник

Оцените статью
Разные способы