Оптимизация характеристик компьютерных систем. Оптимизация характеристик компьютерных систем
Скачать 0.77 Mb.
|
Дефрагментация Когда производится запись новой информации на устройство, она не всегда размещается рядом. Размещение отдельных пакетов производится по свободному месту тома. После проведения многочисленных записей, одни файл может быть расположен по всему носителю. Это приводит к тому, что система постоянно обращается к разным секторам. Используя дефрагментацию, можно искать подобные данные и собирать их вместе. Затем система будет обращаться к соседним местам, что увеличит скорость работы. Подобный инструмент способен помочь только при использовании HDD дисков. Функция имеется в различных программах, которые предлагают сервисы по ускорению работы компьютера. Операционные системы от Microsoft имеют возможность проводить дефрагментацию с использованием встроенных возможностей. Для этого в «Компьютере» необходимо выбрать необходимый диск и произвести запуск контекстного меню. Затем выбирается «Свойства», там пункт «Сервис» и указать «Оптимизировать». Затем ОС предложит выполнить дефрагментацию. Переразметка В случаях, когда компьютер используется длительное время и работает винчестер на полную мощностью, можно произвести переразметку. Это поможет при наличии двух и более разделов. Это форматирование диска, а некоторые разработчики указывают, что заново «режется» жесткий диск на сектора и дорожки. Идеальным является вариант, когда в системе применяется один жесткий диск с единственным томом. Нормальной считается система с двумя разделами. При большем количестве – система будет более медленно работать, тратя время на поиск необходимых файлов. В данном процессе поиск осуществляется по всем жестким дискам поочередно. Можно один жесткий диск использовать для установки ОС и софта, на другой записывать фильмы и прочие мультимедийные файлы. Перемещение файлов на съемный носитель Неплохим вариантом считается перемещение неиспользуемых данных на отдельные носители. Зачастую для этого применяются внешние накопители. Важно выбирать надежные внешние HDD, которые будут отличаться высокой скоростью обработки информации. Изделия можно использовать не только для хранения устаревших файлов, но и в виде флешки. Для подобных целей 500 Гб будет достаточно. С компьютером он соединяется по USB интерфейсу и отличается бесшумной работой. Отключение автозагрузки программ Наличие лишних программ в автозагрузке существенно замедляет работу компьютера и использует его процессор и память. Если их отключить, то можно увеличить скорость работы диска и в целом производительность системы. В разных версиях Виндовс управление автозагрузкой располагается в разных местах. Наиболее удобно для подобной цели использовать утилиту «CCleaner». Требуется осуществить запуск утилиты и перейти в меню «Сервис/Автозагрузка». В автозагрузке нужно оставить только те программы, которые нужны для работы компьютера, например, антивирус. Остальные компоненты можно отключить кнопкой «Выключить» в правой панели. Любую из отключенных программ можно всегда снова запустить вручную. Если пропадет значок в системном трее, то ее запуск можно вернуть с использованием кнопки «Включить». Обновление драйвера контроллера диска От актуальности драйверов зависит стабильность всей системы. Рекомендуется обновлять драйверы до новейшей версии, особенно это касается SSD дисков. Для проверки версии установленных драйверов нужно зайти в «Диспетчер устройств». Необходимо вызвать командную строку, а в ней ввести «devmgmt.msc» и нажать «Enter». Затем нажать правой кнопкой мыши по SATA контроллеру и выбрать пункт «Свойства». Если используется старый драйвер, то новый можно найти на официальном сайте производителя системной платы или ноутбука, скачать и обновить его. Существуют специальные утилиты, которые позволяют обновить драйверы. Можно выбрать софт «Driver Booster», который при запуске покажет список драйверов, для которых требуется обновление. Данная информация поможет Вам оптимизировать жесткий диск и повысить его работоспособность. Способы увеличения быстродействия программ Современные ЭВМ обладают очень большой мощностью. Скорость работы процессора (ЦП) современных ЭВМ измеряется гигагерцами, объём оперативной памяти гигабайтами, а современные интерфейсы устройств обеспечивают скорость обмена данными порядка, как минимум, нескольких сотен мегабайт в секунду. Производительность, которая ещё несколько лет назад казалась «сказочной» в настоящее время стала нормой жизни. Однако параллельно росту мощности ЭВМ увеличивается и ресурсоёмкость приложений. У приложений совершенствуется функционал, интерфейс, возрастает объём обрабатываемых данных и как следствие системные требования. Поэтому вопрос об увеличении быстродействия приложений не теряет своей актуальности. Общие вопросы быстродействия программ. Быстродействие программ (ПО) зависит от многих факторов, но основными из них являются два: Соотношение между реальными системными требованиями ПО и существующей аппаратной конфигурацией ЭВМ; Алгоритмы работы ПО. Если низкое быстродействие обусловлено первым фактором, то решением является модернизация аппаратной части (hardware). В некоторых случаях проблему можно решить также с помощью тонкой настройки hardware и операционной системы. Однако этот путь имеет ряд недостатков: Увеличивается производительность hardware, а вовсе не быстродействие ПО; Производительность hardware ограничена возможностями существующих в данный момент элементной базы и инженерных решений в данной области; Большие финансовые затраты на модернизацию и настройку по причине высокой стоимости комплектующих ЭВМ и услуг специалистов требуемой квалификации. По этим причинам при разработке ПО прибегают к увеличению его быстродействия с помощью различных средств программной инженерии. Это позволяет: Обеспечить работу нового ПО на уже существующем оборудовании; Разработать масштабируемое ПО; Значительно уменьшить финансовые и трудовые затраты при внедрении. Вместе с тем и у этого пути имеется ряд недостатков: Значительно усложняется процесс разработки ПО, так как более «быстрые» алгоритмы сложнее более «медленных» (на пример алгоритм бинарного поиска сложнее, чем алгоритм линейного поиска); Реализация более сложных алгоритмов, как правило, требует привлечения специалистов более высокой квалификации; В случае работы с большими объёмами данных или выполнении задач требующих больших и сложных вычислений, ресурсоёмкость ПО всё равно остаются достаточно высокой. Несмотря, на какие либо способы увеличения быстродействия. Таким образом, в общем случае обеспечение быстродействия ПО является комплексной задачей. Однако следует заметить, что среди существующих задач, очень немногие обладают высокой ресурсоёмкостью. Вследствие этого в большинстве случаев не требуется никаких действий относительно hardware и требуемого результата можно достичь, прибегая только к программной инженерии. Программная инженерия предоставляет несколько способов увеличения быстродействия программ. Рассмотрим их на примере языков программирования Delphi и Assembler. Увеличение быстродействия программ. Как было показано в предыдущем параграфе, можно увеличить быстродействие ПО соответствующим образом реализовав его алгоритмы. Количественным показателем быстродействия алгоритма (а, следовательно, и ПО) является время его выполнения, измеренное по специальной методике, так называемого профилирования. Таким образом, в общем случае выбор наиболее «быстрых» алгоритмов сводится к измерению времени их выполнения и сравнении полученных результатов между собой. Такой способ анализа быстродействия является наиболее объективным. На протяжении многих лет программистами был накоплен большой опыт профилирования, который позволяет сделать определённые выводы относительно возможности оптимизации быстродействия ПО ещё на стадии написания. Эти выводы были обобщены и представлены в виде определённых рекомендаций. Если программист будет следовать данным рекомендациям, то написанная программа вероятнее всего будет обладать большим быстродействием, чем в случае их игнорирования. Однако следует ещё раз подчеркнуть, что достоверные сведения о быстродействии может дать только профилирование. Это обусловлено тем, что быстродействие алгоритма определяет в первую очередь его конкретная реализация. Кроме того необходимо ещё раз отметить, что в отношении увеличения быстродействия ПО программная инженерия не всесильна. В чём же состоят выше упомянутые рекомендации? Их краткое содержание применительно к языку программирования Delphi приведено ниже. При написании кода программ рекомендуется избегать процедур, состоящих из сотен строк. Практически всегда в них можно выделить блоки, которые лучше оформить в виде отдельной процедуры. Возможно, позже вы ей даже воспользуетесь где-то в другом месте. Не говоря уже о том, что это повышает понимание программы и вами, и другими программистами. К тому же так проще искать «узкие» места в программе. Использование оператора case (switch) вместо многократных if… then… else (if… else). Во втором варианте компилятор будет выполнять проверку условия столько раз, сколько у вас вариантов. В первом проверка выполняется лишь однажды. Некоторые действия могут быть довольно продолжительными, поэтому рекомендуется выносить за рамки цикла всё, что можно выполнить вне его, чтобы избежать большого числа повторений внутри цикла. В циклах типа for нужно стараться, чтобы значение счетчика уменьшалось до нуля, а не наоборот — начиналось с нуля. Это связано с особенностями процессора. Сравнение с нулём выполняется гораздо быстрее, чем с другим числом. Пользоваться типом Variant только при необходимости. Операции над этим типом сложнее, чем, например, над Integer или String. Не злоупотреблять «программированием на компонентах». В частности не использовать компонент TTreeView для хранения древовидных структур данных — он работает очень медленно и предназначен только для визуального отображения. В случае работы со структурами данных лучше использовать алгоритмы, созданные самостоятельно на основе фундаментальных. Сохранение и загрузка свойств компонентов с помощью методов ReadComponent и WriteComponent работает довольно медленно, поэтому по возможности рекомендуется сохранять и восстанавливать состояние программы между сеансами при помощи других способов. Заменить простой в реализации алгоритм на более сложный, но с большим быстродействием. Например, если заранее известно, что в списке для поиска будет много элементов, лучше его отсортировать и применять бинарный поиск вместо линейного. В критических с точки зрения быстродействия местах программы делать вставки на ассемблере. Команды ассемблера напрямую транслируются в машинный код. Таким образом, в отличие от высокоуровневых языков при компиляции отсутствует проблема синхронизации и ряд других негативных обстоятельств. Для других языков программирования вышеприведённый список может несколько отличаться, в частности отсутствием поддержки ассемблера и как следствие возможности оптимизации с его помощью (Java, Visual C# и др.). Особо следует отметить, что рекомендации 3 и 4 применяются не только для языков высокого уровня, но и для ассемблера. Помимо вышеуказанных для увеличения быстродействия программ написанных на ассемблере, в том числе и вставок, существуют следующие рекомендации: Замещение универсальных инструкций на учитывающие конкретную ситуацию, например, замена умножения на степень двойки на команды сдвига (отказ от универсальности). Уменьшение количества передач управления в программе: за счет преобразования подпрограмм в макрокоманды для непосредственного включения в машинный код; за счет преобразования условных переходов так, чтобы условие перехода оказывалось истинным значительно реже, чем условие для его отсутствия; перемещение условий общего характера к началу разветвленной последовательности переходов; преобразование вызовов, сразу за которыми следует возврат в программу, в переходы («сращивание хвостов» и «устранение рекурсивных хвостов») и т.д. Максимальное использование всех доступных регистров за счет хранения в них рабочих значений всякий раз, когда это возможно, чтобы минимизировать число обращений к памяти, упаковка множественных значений или флагов в регистры и устранение излишних продвижений стека (особенно на входах и выходах подпрограмм). Использование специфических для данного процессора инструкций, например, инструкции засылки в стек непосредственного значения, которая имеется в процессоре 80286 и более поздних. Другие примеры – двухсловные строковые инструкции, команды перемножения 32-разрядных чисел, деление 64-разрядного на 32-разрядное число и умножение на непосредственное значение, которые реализованы в процессорах 80386 и 80486. Программа должна, разумеется, вначале определить, с каким типом процессора она работает. Заключение. Методы оптимизации быстродействия, рассмотренные в этой статье, были выработаны и проверены не одним поколением программистов и уже стали классическими. В то же время информационные технологии, в частности технологии программирования, постоянно развиваются. Появляются новые технологии, старые – модернизируются или уходят в прошлое. Растёт производительность аппаратной части ЭВМ и параллельно с этим растёт сложность и ресурсоёмкость выполняемых ими задач. |