Оптимизация вывода графики на экран


Содержание

Оптимизация вывода графики на экран Ernest Avagyan — часть 5

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

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

Для создания палитры используются методы CreatePalette и CreateHalftonePalette. Созданную палитру можно изменить методом SetPaletteEntries.

В Windows существует еще один способ управления цветом — макросом RGB. Он задает функцию, возвращающую значение типа COLORREF. У нее три параметра, задающий красный, зеленый и голубой компонент устанавливаемого цвета. Каждый компонент может принимать значения от 0 до 255. Итоговый цвет получается смешением красного, зеленого и синего цветов в соответствующих пропорциях.

3. GDI-атрибуты контекста устройства

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

    Сохранить старое значение атрибута. Установить новое. Выполнить необходимые действия. Восстановить старое значение атрибута.

Последовательность этих действий иллюстрируется примером:

    // сохранение старого и установление нового значения атрибута
    CPen* pOldPen=pDC->SelectObject(&Pen);
    // выполнение необходимых действий
    pDC->MoveTo(. ); pDC->LineTo(. );
    // восстановление старого значения атрибута
    pDC->SelectObject(pOldPen);

>

>

Метод SelectObject в качестве результата возвращает указатель на текущее перо и делает текущим перо, указанное в качестве параметра метода.

Оптимизация вывода графики (многопоточность)

1000000] получить DataSeries[

2000], что прекрасно реализуется в моей функции. Но вот беда, если пускать это преобразование в потоке GUI, то это занимает несколько секунд, что не есть хорошо(на протяжении этого времени GUI поток «мертв»). И захотел я обойти это следующим образом: в обработчике события(GUI-поток) ставлю на холст анимашку, которая говорит, что происходит рисование, в другом потоке провожу конвертацию DataCollection, передаю результат в GUI поток и отрисовываю свои

2000 точек. В таком случае, по идее, GUI поток не будет мертв, пользователь будет в восторге. Возникли проблемы в реализации этого механизма: в wpf практически все наследоваио от DispatcherObject, т.е. не может вызываться из других потоков. Как именно мне передать DataCollection в другой поток, как передать преобразованную DataCollection обратно и отрисовать ее? Заранее спасибо за помощь! P.S. уже намаялся с Dispatcher, BackgroundWorker etc.

0.3 секунды. P.S.S. на данный момент я остановился на реализации через расшаривание коолекции для нескольких потоков с помощью .NET 4.5. Могу ли я обратиться к произвольному свойству (только прочитать его) из другого потока?

миллионы) количества точек, делал все из основного потока и перебор/фильтрация значений занимали в несколько раз меньше времени чем отрисовка (в WPF отрисовка вообще ужасно тормозная, хотя вроде как аппаратное ускорение поддерживает).

Оптимизация вывода графики на экран

Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Форум программистов > Технологии > Помощь студентам
Измерение скорости вывода графики на экран(asm)
Регистрация
Поиск по форуму
Расширенный поиск
К странице.

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда — alarforum@yandex.ru

Assembler(TASM, Ms-dos)
Есть задача: «Написать программу для измерения скорости вывода графики на экран(пикселей/с) в режиме 320x200x256 цветов. Результат выдавать в десятичном коде. Опрос таймера выполнять при помощи функций DOS.»(доступ к видеопамяти прямой)

Алгоритм я набросал:
1.Инициализация графического режима
2.Вывод графики в цикле и запуск таймера(системный таймер dos)
3.Остановка таймера и считывание значения времени, расчет значения скорости и перевод его в 10чный код, вывод на экран

Вопрос по пункту 2 к знающим людям)

Я предполагаю что нужно просто вывести на экран красный квадрат в заданном граф режиме(для примера) 1 раз, и затем считать из таймера время. как это организовать наиболее оптимально?

Как улучшить графику на компьютере — аппаратный и программный способы

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

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

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

Аппаратный способ

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

Установить её не составит труда. В комплекте с картой идёт диск, на котором содержатся программа установки её драйверов.

Улучшенного изображения можно добиться также благодаря приобретению более мощного процессора или увеличению оперативной памяти.

Вот вам кстати статья о том, из чего состоит компьютер.

Сбалансированная система

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

Но с другой стороны при наличии слабой видеокарты не следует думать, что увеличенная память либо установка нового процессора сможет решить проблему. По стоимости процессор и карта почти одинаковы (для компьютеров игрового типа она может составлять до 15 000 рублей). Увеличение памяти будет стоить чуть дешевле, но всё зависит от того, насколько конкретно вы хотите ее увеличить.

Программный способ

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

  1. Кликаете правой кнопкой мыши по рабочему столу
  2. В выпавшем меню выбираете «Свойства»
  3. Активируете вкладку «Параметры»
  4. Если, кроме драйверов видеокарты, на вашем ПК установлены специальные утилиты, тогда нажимайте на кнопочку «Дополнительно».

Вышеуказанный путь следует использовать для системы Windows XP. Что касается ОС Windows 7 и Windows 8, то здесь нужно: зайти в «Мой компьютер», в выпавшем меню кликнуть «Свойства», справа выбирайте пункт «Диспетчер устройств», в списке найдете видеоадаптеры. Найдите свою видеокарту, нажмите правой кнопкой по ее названию и вызовете «Свойства».

В моем windows 10 я делаю так:

  1. Правой кнопки мыши по рабочему столу
  2. Выбираю «панель управления Nvidia»
  3. Слева в меню кликаю на пункт «управления параметрами 3D»


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

Фильтрация, сглаживание

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

Среди множества настроек вас должно интересовать «Управление параметрами 3D», поскольку именно с данным разделом вы и будете работать. В этом разделе особый интерес представляют следующие пункты:

  • Сглаживание — параметры;
  • Вертикальный синхроимпульс;
  • Анизотропная фильтрация.

Значения первой и последней настройки — 32х, 16х, 8х, 4х, 2х. Причём чем больше значение, тем более приятной и гладкой получится картинка.

Вертикальный синхроимпульс (пункт №2) может управляться параметрами приложения 3D, быть в отключённом или включённом состоянии. Для максимального улучшения графики его следует включить.

В некоторых случаях доступ к настройке «Параметры — сглаживание» может быть закрыт. Чтобы выставить нужные значения необходимо в «Сглаживание — режим» установить «Увеличение настройки приложения».

Вот и всё, дорогие друзья! Теперь вы знаете, как повысить чёткость, яркость и прочие характеристики изображения.

Кстати, этому и многому другому вас научит курс « Гений компьютерщик ». Здесь в простой и доступной форме рассказывается обо всех тонкостях работы на компьютере. Овладеть компьютерной грамоте с помощью этого курса может человек любого возраста. Он способен сделать настоящего компьютерного «аса» из любого «чайника»!

Поделитесь ссылкой на эту статью с друзьями в соц. сетях, наверняка, кто-то из них является любителем видеоигр, и эта статья им будет полезна. Не забудьте подписаться на обновления. До встречи на страницах моего блога!

С уважением! Абдуллин Руслан

Интернет-магазин электрооборудования Gira предлагает электрооборудование

Оптимизация Web-графики

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

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

Параметры оптимизации задаются в специализированной палитре Optimize (Оптимизация), открывающейся командой Window > Optimize (Окно > Оптимизация). Изменение параметров ведет к мгновенному изменению изображения, демонстрируемого в окне просмотра. Палитра Optimize может быть открыта в сокращенном или полном варианте. Выбор варианта осуществляется во всплывающем меню, вызываемом щелчком на треугольной стрелке в правом верхнем меню палитры и командами Hide Options (Скрыть опции) или Show Options (Показать опции) (рис. 1).

Рис. 1. Изменение варианта представления палитры Optimize

Для оценки качества оптимизации предумотрено два режима предварительного просмотра изображений:

• 2-Up (2 варианта) — одновременный просмотр оригинала и оптимизированного в соответствии с настройками палитры Optimize изображения (рис. 2);

• 4-Up (4 варианта) — в этом режиме область просмотра делится на четыре окна (рис. 3) для отображения исходного изображения и трех версий оптимизированного: первая версия создается на основе значений палитры Optimize, а две другие являются вариантами текущих настроек оптимизации.

Рис. 2. Окно просмотра изображения в режиме 2-Uр

Рис. 3. Окно просмотра изображения в режиме 4-Uр

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

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

Рис. 4. Определение информации, отображаемой в строке состояния

Форматы сжатия файлов

Web-графику можно сохранять в форматах сжатия GIF, JPG или PNG. Индексированные изображения, имеющие небольшое количество цветов, обычно сохраняют в формате GIF. При сохранении полноцветных и полутоновых изображений (фотографий и цветонасыщенной графики, например градиентных заливок) используется формат JPG. Для полноцветных изображений с прозрачными участками применяется формат PNG, который позволяет сохранять как индексированные, так и полноцветные изображения, не теряющие при сохранении в PNG своего качества, поскольку этот формат сохраняет всю цветовую информацию и один альфа-канал изображения, используемый браузером в качестве маски прозрачности. ImageReady поддерживает два PNG-формата сжатия графических данных: PNG и PNG-24. В формате PNG-8 максимально возможное количество цветов оптимизированного изображения равно 256, и вообще данный формат очень напоминает формат GIF, за исключением того, что здесь нельзя создавать анимацию. В формате PNG-24 у изображения могут быть миллионы цветов, и этим он похож на формат JPEG. Отличие PNG-24 от JPG заключается в том, что используемый для оптимизации изображений метод сжатия не приводит к потере качества, а кроме того, увеличивает размер файла, из-за чего файлы в формате PNG-24 всегда больше аналогичных JPEG-файлов.

На размеры GIF- и PNG-файлов в значительной степени влияет размер палитры изображения: уменьшение палитры автоматически ведет к уменьшению размера файла и к снижению его качества. Размер JPEG-файла в основном зависит от установленной степени сжатия, то есть при увеличении степени сжатия размер файла уменьшается одновременно со снижением его качества, причем степень сжатия можно несколько увеличить, если изображение не содержит резких контрастов. С этой целью допустимо незначительное (не приводящее к заметному ухудшению качества) размытие изображения перед его оптимизацией.

Автоматическая оптимизация по размеру файла

Если вы не хотите разбираться с настройками оптимизации, то можно воспользоваться опцией Optimize to file size (Уложиться в заданный размер), и тогда программа автоматически подберет необходимые параметры сжатия в соответствии с указанным вами размером файла. Правда, качество полученной оптимизации может оказаться намного хуже, чем в случае ручного подбора оптимальных параметров. Поэтому к автоматической оптимитизации стоит прибегать лишь в крайних случаях и только при работе с простыми изображениями.

Чтобы воспользоваться данной возможностью, щелкните на треугольной стрелке в правом верхнем углу палитры Optimize, выберите команду Optimize to file size (Оптимизировать по размеру файла) из всплывающего меню и введите окончательный размер сжатого изображения (рис. 5) в поле Desired File Size (Требуемый размер файла). Установите переключатель в области Start With (Начать с) в положение Current Settings (Текущие установки) или в положение Auto Select GIF/JPEG (Автоматический выбор GIF/JPEG). Первый вариант предпочтителен в том случае, когда при автоматической оптимизации должен использоваться формат, определенный в палитре Optimize, а второй — когда программа самостоятельно выбирает формат, наиболее подходящий для оптимизации данного изображения.

Рис. 5. Автоматическая оптимизация на основе формата палитры Optimize

Оптимизация в форматах JPEG или PNG-24

Откройте исходное изображение (рис. 6), выберите вкладку 2-Up в верхней части главного окна, чтобы одновременно видеть исходное изображение и его оптимизированный вариант.

Рис. 6. Исходное изображение

Активизируйте палитру Optimize и из всплывающего меню Settings (Настройки) выберите вариант JPEG High (JPEG с высоким качеством), JPEG Low (JPEG с низким качеством), JPEG Medium (JPEG со средним качеством) или PNG-24 (рис. 7). Полученное оптимизированное изображение может напоминать картинку на рис. 8.

Рис. 7. Установка варианта сжатия JPEG High

Рис. 8. Результат оптимизации в формате JPEG High

Наибольшее влияние на размер файла изображения оказывает качество, поэтому в большинстве случаев не стоит ограничиваться вышеприведенным вариантом оптимизации, поскольку он является весьма приблизительным. Настройки оптимизации лучше подобрать вручную, для чего в списке Optimized file format (Оптимизировать формат) из всплывающего меню выберите формат JPEG, а затем определите качество сжатия, выбрав нужный вариант из списка Compression quality (Качество сжатия). А лучше перетащить ползунок Quality (Качество) справа налево и оставить его чуть правее той позиции, где вы заметите нежелательное ухудшение качества изображения. Однако не забывайте, что чем ниже степень сжатия (или выше качество изображения), тем больше будет конечный размер файла.

Установите флажок Progressive (Постепенно), чтобы оптимизированное изображение отображалось на Web-странице постепенно, с возрастающей детализацией (рис. 9). Изображение в окне предварительного просмотра примет приблизительно такой вид, как на рис. 10. Помните, что включение данной опции приводит к увеличению размера файла, поэтому рекомендуется устанавливать флажок Progressive только для достаточно больших изображений, ибо в этом случае несколько большее время загрузки компенсируется удобством отображения.

Рис. 9. Настройка параметров оптимизации

Рис. 10. Промежуточный результат оптимизации

Для уменьшения видимости дефектов, которые неизменно появляются при сжатии файла, а также для уменьшения размера файла немного увеличьте степень размытия в поле Blur (Размытие), например так, как показано на рис. 11. Результат оптимизации с размытием может напоминать изображение на рис. 12. Сильно увеличивать степень размытия нельзя, так как в этом случае изображение окажется чрезмерно сглаженным (приблизительно как на рис. 13) при размытии 0,3 пиксела. Обычно приемлемой величиной размытия является 0,1-0,2 пиксела.

Рис. 11. Добавление размытия в оптимизированное изображение

Рис. 12. Окончательный вариант оптимизированного изображения

Рис. 13. Изображение со слишком сильным размытием

Если в изображении присутствуют прозрачные области (рис. 14), то после оптимизации и экспорта в Web они превратятся в белые. Чтобы такого не произошло, нужно при настройках оптимизации в поле Matte (Кайма) дополнительно установить цвет заполнения прозрачных областей (рис. 15) — как правило, в качестве цвета заполнения выбирают фоновый цвет страницы. В результате иллюзия прозрачности сохранится и после внедрения изображения на Web-страницу (рис. 16).

Рис. 14. Изображение с прозрачными областями

Рис. 15. Установка цвета заполнения прозрачных областей

Рис. 16. Изображение с прозрачными областями на Web-странице

Оптимизация в формате GIF и PNG-8

Откройте исходное изображение (рис. 17), выберите вкладку 4-Up в верхней части главного окна, чтобы одновременно видеть исходное изображение и его оптимизированный вариант.


Рис. 17. Исходное изображение

Активизируйте палитру Optimize и из всплывающего меню Settings (Настройки) для каждого из окон выберите различные варианты сочетаний настроек оптимизации — в данном примере были выбраны варианты GIF 128 Dithered, GIF 32 No Dither, PNG-8 128 Dithered (рис. 18).

Рис. 18. Оптимизированное изображение в режиме 4-Uр с различными параметрами оптимизации

А теперь сравните полученные изображения (при желании в одном из окон можно сменить вариант оптимизации на более подходящий). Как и в случае оптимизации формата JPEG, с помощью вариантов оптимизации из меню Settings вы не сможете добиться наилучшего результата по соотношению «качество/размер файла». Лучшие настройки оптимизации можно подобрать только вручную.

В списке Optimized file format (Оптимизировать формат) из всплывающего меню выберите формат GIF. Затем (поскольку размер файла индексированного изображения в большей степени зависит от размера палитры изображения, то есть от количества задействованных цветов: чем цветов меньше, тем меньше будет графический файл) начните последовательно уменьшать количество цветов в поле Colors. При этом внимательно наблюдайте за оптимизируемым изображением, так как ваша задача — максимально уменьшить размер палитры при сохранении приемлемого качества изображения. В рассматриваемом примере изображения минимально допустимое число цветов оказалось равным восьми. После этого в случае необходимости измените алгоритм сжатия в поле Color reduction algorithm (Алгоритм сокращения количества цветов). По умолчанию устанавливается вариант Selective (Селективный), обычно дающий лучшие результаты. Однако в нашем случае лучшее качество (что видно в первую очередь по большей четкости букв) при меньшем размере файла обеспечивает алгоритм Adaptive (Адаптивный) (рис. 19).

Рис. 19. Предварительный просмотр вариантов оптимизации в зависимости от используемого алгоритма

Перейдите на вкладку 2-Up и из всплывающего меню Specify the dither algorithm выберите вариант сглаживания, которое позволяет автоматически имитировать цвета, отсутствующие в палитре, несколькими соседними пикселами близких цветов. Для большинства изображений, в том числе для фотографических, наилучшие результаты дает диффузионное сглаживание — Diffusion, а для фоновых текстур и градиентов предпочтительнее алгоритм с генерацией шума — Noise. После этого в поле Dither (Размытие) нужно задать конкретное значение размытия. Чем больше значение в поле Dither, тем больше цветов-заменителей можно имитировать. Нужно иметь в виду, что операция размытия, как правило, увеличивает размер файла, хотя бывают исключения, когда небольшое значение размытия при диффузионном сглаживании может привести к уменьшению размера файла. В нашем примере имеет место именно такая ситуация при варианте сглаживания Diffusion и значении сглаживания в 22% (рис. 20).

Рис. 20. Уменьшение размера файла в результате диффузионного сглаживания

ImageReady предлагает еще одну возможность уменьшения размера итогового файла изображения — за счет незначительного снижения качества в поле Lossy (Качество). Большие значения этого параметра существенно снижают качество изображения, но его установка в пределах от 5 до 20% обычно позволяет несколько сократить размер файла при незаметном глазу снижении качества. Переместите ползунок Lossy на отметку 20% — в рассматриваемом примере это позволило уменьшить размер файла с 5,041 до 4,996 Кбайт (рис. 21).

Рис. 21. Уменьшение размера файла в результате снижения качества в окне Lossy

Взвешенная оптимизация

С целью точного управления операцией размытия и для уменьшения количества используемых цветов можно применить метод взвешенной (то есть различной для разных областей изображения) оптимизации, которая обеспечивает наилучший вариант сжатия изображения без заметного ухудшения его качества. Взвешенная оптимизация позволяет установить верхнюю и нижнюю границы качества при сжатии изображений в форматах GIF, PNG и JPEG и предполагает предварительное создание и сохранение канала выделенной области. При этом в процессе оптимизации верхнее ограничение будет применено к белой области канала (расположенной внутри выделения), а нижнее ограничение — к черной (расположенной за пределами выделенной области). Одновременно с этим можно указать алгоритм сокращения количества цветов и метод размытия для форматов GIF и PNG-8, предельный уровень потери данных для GIF и уровень качества изображения в целом для JPEG.

Вначале рассмотрим особенности взвешенной оптимизации на формате JPEG. Откройте исходное изображение (рис. 22), выберите вкладку 2-Up в верхней части главного окна, чтобы одновременно видеть и исходное изображение, и его оптимизированный вариант.

Рис. 22. Исходное изображение

Оптимизируйте изображение, активизировав палитру Optimize и из всплывающего меню Settings выбрав вариант JPEG High (JPEG с высоким качеством) — другие варианты сжатия в данном примере оказываются неэффективными, так как ведут к значительному снижению качества. Полученное оптимизированное изображение будет примерно таким, как на рис. 23, а выиграть удается чуть менее 9 Кбайт — сократив размер файла с 50 до 41,56 Кбайт.

Рис. 23. Результат оптимизации в формате JPEG High

Для использования взвешенной оптимизации выделите область, для которой планируете применить верхнее ограничение качества (рис. 24). Этой областью должна стать та часть изображения, где требуется наилучшее качество. Создайте -канал, применив команду Select > Save Selection (Выделить > Сохранить выделенную область) (рис. 25).

Рис. 24. Выделение области изображения

Рис. 25. Создание -канала

На палитре Optimize щелкните по кнопке Use a channel… (Применить в качестве канала) (рис. 26) — откроется диалоговое окно Modify Quality Settings (Изменить установки качества), в котором задаются параметры взвешенной оптимизации. Из всплывающего меню Channel (Канал) выберите канал выделенной области (рис. 27).

Рис. 26. Выбор кнопки Use a channel…

Рис. 27. Внешний вид окна Modify Quality Settings до изменения настроек Maximum и Minimum

По умолчанию значение в поле Maximum (Максимум) соответствует значению, найденному при обычной оптимизации, а в поле Minimum (Минимум) оно равно нулю. Если переместить вправо левый ползунок, определяющий минимальное значение, и совместить его с правым ползунком (рис. 28), то качество сжатия на всей площади изображения станет одинаковым, что соответствует не взвешенной, а обычной оптимизации. Если оставить левый ползунок в исходном после открытия окна Modify Quality Settings (Изменить установки качества) положении, когда минимальное значение равно нулю, то сжатие выделенной области окажется максимальным, что обеспечит наименьший размер файла. Если полученное качество оптимизированного изображения достаточно, то лучше на этом варианте и остановиться. Если же нет, то начните медленно передвигать левый ползунок вправо (размер файла при этом будет увеличиваться) до тех пор, пока качество изображения вас не будет устраивать (рис. 29). В итоге разные области изображения будут оптимизированы с различной степенью сжатия, результат может напоминать рис. 30, а размер итогового файла уменьшится с 41,56 Кбайт (при обычной оптимизации) до 40,82 Кбайт.

Рис. 28. Положение ползунков в окне Modify Quality Settings при обычной оптимизации

Рис. 29. Окончательное значение параметров Maximum и Minimum

Рис. 30. Результат взвешенной оптимизации изображения (вариант JPEG High)

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

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

Эффективна взвешенная оптимизация и в том случае, если области, которые желательно оптимизировать с разными параметрами, имеют непрямоугольную форму, как, например, на рис. 31, а следовательно, такое изображение нельзя разрезать на фрагменты. В таких ситуациях взвешенная оптимизация поможет уменьшить размеры графических файлов без ухудшения их качества (рис. 32 и 33).

Рис. 31. Результат обычной оптимизации (область вне выделения может быть оптимизирована с большим сжатием)

Рис. 32. Окно Modify Quality Settings с оптимальными настройками взвешенной оптимизации

Рис. 33. Результат взвешенной оптимизации

Формат GIF также поддерживает взвешенную оптимизацию, причем технология взвешенной GIF-оптимизации практически идентична соответствующей JPEG-оптимизации. Разница лишь в том, что если в формате JPEG для разных областей можно изменять только качество, то взвешенная оптимизация для формата GIF позволяет индивидуально настраивать качество (рис. 34) и размытие (рис. 35). Соответствующие диалоговые окна настройки параметров взвешенной оптимизации открываются маленькими кнопками справа от соответствующих списков и полей ввода (рис. 36). Оптимизированное путем взвешенной GIF-оптимизации изображение представлено на рис. 37, при этом его размер удалось сократить с 12,23 Кбайт (при обычной GIF-оптимизации) до 8,546 Кбайт.

Рис. 34. Окно Modify Lossines Settings

Рис. 35. Окно Modify Dither Settings

Рис. 36. Кнопка настройки качества взвешенной GIF-оптимизации

Рис. 37. Результат взвешенной GIF-оптимизации

Оптимизация фрагментов

Разнородные графические элементы Web-страницы могут потребовать для своей оптимизации различных параметров или даже форматов. В таких случаях большое изображение лучше разрезать на отдельные фрагменты — слайсы и установить для каждого из них индивидуальные настройки оптимизации, чтобы добиться оптимального соотношения «качество/размер» для изображения в целом.

Чтобы рассмотреть данный вариант на практике, откройте подходящее исходное изображение (рис. 38). Большая часть изображения вполне годится для сжатия в формате GIF с небольшим количеством цветов, но наличие фотографий препятствует использованию данного формата. Нужное качество при оптимизации фотографических изображений может дать только формат JPEG, формирующий более объемные файлы. Разумным компромиссом будет разбить изображение на отдельные фрагменты и для каждого из них установить свой формат сжатия.

Рис. 38. Исходное изображение

Активизируйте инструмент Slice Tool (Нож для нарезки) и с его помощью выделите на изображении нужные фрагменты (рис. 39).

Рис. 39. Результат разбиения изображения на слайсы

Установите для каждого из слайсов нужный формат оптимизации на вкладке Optimize: для фрагментов с фотографией — в соответствии с рис. 40, а для навигационных слайсов — как на рис. 41.

Рис. 40. Настройка оптимизации для фотографий

Рис. 41. Настройка оптимизации для панели навигации

Полученное оптимизированное изображение будет напоминать рис. 42, а размер соответствующего графического файла окажется равным 36,61 Кбайт, что почти на 23 Кбайт меньше, чем соответствующее изображение, оптимизированное без разрезания на фрагменты (рис. 43).

Рис. 42. Предварительно разрезанное на слайсы и оптимизированное изображение

Рис. 43. Результат оптимизации без разрезания на фрагменты

Сохранение параметров оптимизации

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

Выберите в меню палитры Optimize, вызываемом при щелчке на треугольной стрелке в правом верхнем углу палитры, команду Save Settings (Сохранить установки — откроется стандартное диалоговое окно сохранения файлов. Настройки оптимизации записываются в отдельные файлы с расширением irs в каталог \Presets\Optimized Settings, вложенный в папку Photoshop. Присвойте файлу настроек имя и нажмите кнопку Save (рис. 44). Результатом станет появление в списке Settings палитры Optimize нового варианта настроек оптимизации (рис. 45), который можно будет в дальнейшем использовать.

Рис. 44. Окно сохранения настроек оптимизации

Рис. 45. Новая настройка в списке Settings


Если настройка создана неудачно или больше не потребуется, то ее несложно удалить, активизировав в списке Settings и вызвав из всплывающего меню палитры Optimize команду Delete Settings (Удалить установки) — настройка будет удалена.

Настройки «глобальных параметров» драйвера для видеокарт NV >©

Настройки «глобальных параметров» драйвера для видеокарт NVidia на максимальную производительность, без потери в качестве.

Anisotropic filtering (Анизотропная фильтрация) — ставим значение Application-controlled (Управление от приложения). Проверьте значение в самом приложении. Желательно не более 8х.

Анизотропная фильтрация нужна для повышение четкости изображения 3д объектов относительно камеры (персонажа, машины и т.д). Выставляем значение Application-controlled (Управление от приложения) — это означает, что приложение будет автоматически выбирать нужный режим анизотропной фильтрации или же фильтрация управляется в самом приложении (программе, игре), чем выше значение фильтрации, тем четче будет изображение. На производительность практически не влияет.

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

Antialising — Gamma correction (Сглаживание — гамма- коррекция) — ставим значение On (Вкл)

«Сглаживание гамма коррекции» сглаживает гамму при переходе от светлого тона к темному или же наоборот. Включение дает возможность сглаживать моменты, например, при «свечении» лица персонажа в лучах света (прямой пример игра Devil May Cry 4 с отличной игрой светлый и темных тонов). На производительность не влияет.

Antialising Mode (Сглаживание — режим) — ставим значение Application-controlled (Управление от приложения)

Очень важный параметр, включения режима сглаживания дает возможность избавления от эффекта лесенок на трехмерном объекте. Выставляем значение Application-controlled (Управление от приложения). — это означает что приложение будет автоматически выбирать нужный режим сглаживания или же сглаживание будет управляется в самом приложении (программе, игре), чем выше значение сглаживание, тем меньше эффекта лесенок будет изображение, тем ниже будет производительность приложения, тем меньше будет кадров в секунду. На производительность влияет негативно.
Для каждого приложения данный параметр можно настроить отдельно (вкладка программные настройки), при этом вам станет доступен пункт Antialising Setting (Сглаживание — параметры), где вы сможете вручную задать уровень сглаживания от 2х до 16х. Даже если приложение не поддерживает сглаживание, это будет делать за него сам драйвер видеокарты.

Anti-aliasing Setting (Сглаживание — параметры) — автоматическое значение Application-controlled (Управление от приложения). Проверьте значение в самом приложении. Желательно не более 4х.

При включении предыдущего пункта Anti-aliasing Mode (Сглаживание — параметры) — Application-controlled (Управление от приложения) текущее значение будет неактивно, активно лишь в том случае если значение Anti-aliasing Mode (Сглаживание — параметры) — Enhance the application setting) (Замещение настроек приложения или увеличение настроек приложения).
Для каждого приложения данный параметр можно настроить отдельно (вкладка программные настройки), получив более высокое качество, если приложение не поддерживает или некорректно обрабатывает Anti-aliasing (сглаживание). Читайте пункт выше.

Anti-aliasing — Transparency (Сглаживание — прозрачность) ставим значение Off (Выкл)

Сглаживание прозрачных поверхностей, означает что объекты, не имеющую структуру будут сглаживаться. Например будет сглаживать «прозрачные» места в текстура лестницы, ведь лестницы, например, рисуют единой текстурой, использую альфа-канал для указания прозрачных и не прозрачных мест. На производительность влияет не очень сильно, но если вам производительность все же важнее, можете поставить «Выкл».
В целом же, особой разницы в качестве картинки между ситуациями, когда эта опция включена или выключена, замечено не было.

Conformant texture clamp (Соответствующая привязка текстуры) — параметр Use hardware (Используются аппаратные средства)

Как видно из названия выбор метода текстурирования, конечно же оптимальным в качестве и производительности выбираем на уровни железа — Use hardware (Используются аппаратные средства) — что естественно производительней чем софтвенный (программный) режим.

Error reporting (Сообщения об ошибках) — значение Off (Выкл)

Бессмысленный параметры, включение которого дает возможность при случае ошибки драйвера отправлять все данные о ошибке и конфигурацию ПК разработчикам NVidia.
(Один из бессмысленных параметров, выключение которого позволит сделать безлимитный доступ драйверу к коду приложения при обработке графики, естественно все ограничения снимаем значением Off (Выкл))

Force mipmaps (Включение масштабируемых текстур) — значение None (Нет)

Устаревшие значение работы 3д приложений. Отключаем так как приложения уже не используют данный метод, значение — None (Нет).

Maximum pre-render frames (Максимальное количество заранее подготовленных кадров) — значение 1 или 2 (выбирайте в зависимости от мощности вашего ЦП)

Максимально количество кадров после первого, которые может подготовить ЦП, для дальнейшей обработки ГП видеокарты. При одном кадре, от 1 до 8 кадров будут подготавливаться на перед, загружаться в память, нагружая ваш ЦП во время подготовки этих кадров. Ставим значение 1 или 2, это позволит капитально увеличить скорость обработки графики в реальном времени. Кол-во кадров выберете сами, но все же рекомендую не более 3. Ориентируйтесь исходя из мощность вашего ЦП (центральный процессор, не путайте с ГП — графическим процессором).

Multi-display/mixed — GPU acceleration (Ускорение нескольких дисплеев/смешанных ГП)- значение Single display performance mode (Режим однодисплейной производительности)

Проще говоря, если выставлен режим Multi display performance mode (Режим многодисплейной производительности) — то графический процессор (ГП) вашей видеокарты отрисовывает изображение для обоих портов видеокарты. А если выставлен режим Single display performance mode (Режим однодисплейной производительности), то сигнал будет идти только на один из портов.
Так что если у вас одна видеокарта и один монитор, то ставьте в обязательном порядке Single display performance mode (Режим однодисплейной производительности).
Заметьте, что когда вы установили новые драйвера на видеокарту, по умолчанию стоит режим Multi display performance mode (Режим многодисплейной производительности) это означает ,что будь у вас два монитора, то подключив его к второму видеовыходу на него тоже бы шел рендеринг изображения. Теряется производительность где то на 5-15%. В общем режим Single display performance mode (Режим однодисплейной производительности) повышает производительность за счет рендеринга на один видеовыход). Увеличивает производительности в 3д приложениях.

Texture filtering — Anisotropic sample optimization (Фильтрация Текстур — анизотропная оптимизация по выборке ) — значение Off (Выкл)

Фильтрация текстур — Анизотропная оптимизация, данный параметр выставляется значением Off, так как данный параметр увеличивает производительность в 3D приложениях за счет ухудшения конечной картинки при рендеринге видеокартой. Но так как мы стремимся к скорости без потери качества, то нам этот параметр не нужен. (Если в параметре Texture filtering (Фильтрация текстур — качество) выставлено — Hight quality (Высокое качество), то данный параметр будет неактивен, выключен.)

Texture filtering — Negative LOD bias (Фильтрация текстур — отрицательное отклонение УД) — значение Clamp (Привязка)

Фильтрация текстур с использованием негатива с масштабируемым уровнем детализации, выставляем значение Clamp (Привязка), что позволит оптимизировать текстурные процедуры путем привязки. Это позволит получить дополнительные 2-3 ФПС в производительности рендеринга, без потери качества. Увеличивает производительности в 3д приложениях.

Texture filtering (Фильтрация текстур — качество) — значение Quality (Качество) или Hight quality (Высокое качество). (Выбирайте в зависимости от мощности вашей видеокарты)

Фильтрация текстур, позволяет улучшить качество картинки, четкость изображения без понижения производительности в рендеринге, соответственно ставим значение Hight quality (Высокое качество). На производительность практически не влияет.

Texture filtering — Trilinear optimization (Фильтрация текстур — трилинейная оптимизация) — значение Off (Выкл)

Фильтрация текстур — трилинейная оптимизация, данный параметр выставляется значением Off, если параметр Texture filtering — Quality (Фильтрация текстур — качество) стоит на значении High quality (Высокое качество), то данный параметр будет неактивен.
О параметре Texture filtering — Trilinear optimization (Фильтрация текстур — трилинейная оптимизация) хочу отметить, что он увеличивает производительность в 3д приложениях за счет ухудшения конечной картинки при рендеринге видеокартой. Но так как мы стремимся к скорости без потери качества, то нам этот параметр не нужен, к тому же Trilinear filtering (Трилинейная фильтрация) намного старше и у неё есть свои минусы, так же как и у двулинейной (билинейной) фильтрации. Тем более Anisotropic filtering (Анизотропная фильтрация) «практически» включает в себя оба этих метода фильтрации текстур с некоторой доработкой.

Threaded optimization (Потоковая оптимизация) — значение On (Вкл). (Включайте только если у вас многоядерный процессор, если нет, поставьте «Авто»)

Оптимизация драйвера видеокарты под многоядерные процессоры, лакомый кусочек для обладателей 2х — 4х ядерных процессоров. По умолчание значение стоит Auto (Авто), но судя по проведенным тестам в приложениях автоматически выставлялось Off (Выкл), но так как мы стремимся увеличить производительность, то выставляем значение On (Вкл). Увеличивает производительности в 3д приложениях.

Triple buffering (Тройная буферизация) — значение Off (Выкл)

Тройная буферизация экрана, буферизирует несколько кадров при вертикальной синхронизации, что позволяет более плавно сгладить переход кадров, тем самым снижает производительность в 3д приложениях. Ставим значение Off (Выкл), тем самым отключая ненужную буферизацию. На производительность влияет негативно.

Vertical sync (Вертикальный синхроимпульс — значение Force off (Отключить)

Вертикальная синхронизация кадров, через вертикальный синхроимпульс синхронизируется количество кадров в секунду с частотой обновления вашего монитора, тем самым убирая некий эффект «разрыва картинки» (на экране это будет выглядеть, например, при резком повороте камеры, будто верхняя часть экрана чуть уехала в сторону, по отношению к нижней), при быстрой смене кадров. При этом, за частую сильно падает FPS (кол-во кадров в секунду), оно не столь значительно падает, только если у вас монитор обновляется с частотой выше 100-120 Гц в секунду, но даже при такой частоте все равно FPS снижается на 10-15%. Ставим значение Off (Выкл), тем самым отключая ненужную вертикальную синхронизацию. На производительность влияет негативно.

Ambient occlusion — Значение «Выкл»

Ambient occlusion модель затенения, используемая в трёхмерной графике и позволяющая добавить реалистичности изображению за счёт вычисления интенсивности света, доходящего до точки поверхности.
Ambient occlusion чаще всего вычисляется путём построения лучей, исходящих из точки поверхности во всех направлениях, с последующей их проверкой на пересечение с другими объектами.
Этот процесс очень прилично нагружает видеокарту, так что смотрите сами, если видеокарта мощная, можете включить. А если нет, то лучше выключить.
В целом же, на мой взгляд, не стоит этот эффект того, что поедает =) Особой разницы вы все равно не увидите, она есть, но минимальна и заметна только, если внимательно присматриваться и знать, что искать =)

Оптимизация Windows — мифы и реальность (часть 2)

Что же такое оптимизация?

Прежде чем углубляться в рассуждения, определимся с терминами.

Толковый словарь дает следующие определения слова «оптимизация»:

  1. Оптимизация — нахождение наибольшего или наименьшего значения какой-либо функции.
  2. Оптимизация — выбор наилучшего (оптимального) варианта из множества возможных.

Первое определение сразу отбрасываем, поскольку речь идет не о математических функциях. На втором стоит остановиться подробнее. Вариантов изменения настроек ОС действительно множество, сценариев использования компьютеров тоже множество. Как определить, какой из вариантов настроек оптимален? И для чего он оптимален?

Еще один термин — скорость работы системы. Он также весьма многогранен.

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

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

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

Скорее всего программа будет использовать 97-99 процентов вычислительной мощности процессора. На первый взгляд все нормально: на свои нужды Windows использует считанные единицы процентов или даже меньше одного процента.

Немного усложним эксперимент и включим в диспетчере задач показ времени ядра.

Картина становится не такой радужной: оказывается, ядро системы работает и отнимает заметную долю ресурсов процессора — в данном случае около 10-20 процентов.

Казалось бы, вот он, резерв повышения производительности! Ведь очевидно, что, оптимизировав работу системы, можно увеличить скорость работы программы чуть ли не на те же самые 10-20 процентов! В идеале, конечно.


На самом деле этот вывод оказывается ложным. Та доля времени, которая отдается ядру, почти целиком используется опять же для нужд того самого архиватора, в частности на операции чтения с диска и записи на него, ведь эти операции выполняет не сама программа, а ОС по указаниям программы. Так что хоть в это «красное» время и исполняется код ядра системы, этот код обслуживает запросы архиватора.

Скорее всего, в этом месте у читателя сходу возникнет полувозражение-полувопрос. Но ведь в это время все же работает код ядра — наверняка можно оптимизировать его работу так, чтобы оно требовало меньше процессорного времени? Что-нибудь подкрутить, что-нибудь подстроить, что-то ненужное отключить.

Увы, сколько-нибудь заметных улучшений добиться не удастся. Прежде всего потому, что львиная доля этого «красного» времени ядра уходит на работу с железом. Проверить это проще простого: возьмите носитель с невысокой скоростью обмена, скажем, переключив контроллер диска в режим PIO. Автор не рекомендует проводить такие эксперименты на основном жестком диске из-за возможности заметного снижения скорости работы. Поэтому для эксперимента был выбран контроллер PCMCIA с модулем флеш-памяти, работающий именно в режиме программного ввода-вывода.

Как видим, доля времени ядра значительно увеличилась, соответственно, скорость работы архиватора сильно упала. Произошло это потому, что почти все ресурсы процессора тратятся на работу с медленным устройством.

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

Есть ли в системе резервы для ускорения работы?

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

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

С одной стороны, на отображение улучшенных элементов интерфейса действительно тратится больше ресурсов процессора и памяти. Хотя и не всегда: например, включенный (в большинстве случаев) по умолчанию аэро-интерфейс в Висте и Windows 7 снижает нагрузку на процессор за счет переноса значительной части работы по формированию изображения на видеоадаптер. С другой стороны — и ресурсов этих стало гораздо больше, так что доля, «отъедаемая» ОС, практически не изменилась. С третьей… но об этом чуть позже.

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

Вернемся в прошлое. Незадолго до выхода Windows XP Майкл Фортин, долгое время руководивший в «Майкрософт» группой, отвечавшей за производительность системы, составил для бета-тестеров весьма любопытный документ о том, как его группа работала и какие результаты получила (выжимки из него можно найти в http://forum.ixbt.com/topic.cgi? >Из этого следует достаточно очевидный вывод, что сколько-нибудь заметного увеличения скорости работы при помощи твикинга и «оптимизаций» получить не удастся.

Предположим, что система отнимает на свои нужды пять процентов времени процессора (обычно эта величина все же меньше), значит, работающему в это время процессу достается 95%. Допустим, мы улучшим систему вдвое (конечно, это фантастика, но давайте все-таки предположим такую возможность), так что она отнимет только 2,5 процента времени ЦП, а приложению достанется уже 97,5 процента. Скорость работы приложения увеличится на (97,5−95)⁄95=2,6 процента, то есть прирост получится отнюдь не фантастическим и практически незаметным на глаз.

Так что утверждать, что какие-то мелкие изменения способны увеличить скорость работы на десятки процентов, может только весьма наивный или сверх меры оптимистичный человек.

Но ведь, опять же скажете вы, в интернете можно найти кучу советов по улучшению тех или иных характеристик — что они дают? Как вы, уже, наверное, поняли, у меня не возникло ни малейшего желания заниматься экспериментальным опровержением всех этих идей: пусть их доказывает тот, кто делает такие утверждения. Но вопрос Майклу Фортину я все же задал, ведь у его группы ресурсов намного больше, чем у любого человека. Ответ звучал так: «Я опросил часть нашей команды [напомню, она называется Windows performance team, то есть группа производительности Windows] и сам немного удивился. Оказалось, большинство из них обсуждало подобные рекомендации и коллективный вывод был таков: много шума из ничего. За одним-единственным исключением: совет удалять программы, которые не используются, — полезен».

Теперь о третьей стороне «свистелок»

Если нельзя добиться сколько-нибудь значительного прироста скорости работы ОС, то что же остается? Один из путей — увеличить производительность компьютера. Это самый надежный, самый дорогой, но не всегда эффективный метод. Помните старую шутку: замените в своем компьютере Pentium 100 на Pentium 200, и он начнет простаивать вдвое быстрее? Во многих случаях повышение скорости компьютера давно уже не увеличивает скорость выполнения работы человеком, сидящим за этим компьютером. Невозможно набрать текст в редакторе или ввести числа в электронную таблицу быстрее только из-за того, что в компьютере прибавилось оперативной памяти или у нового процессора выше частота.

Конечно, какие-то задачи могут эффективно использовать всё более мощные компьютеры, но отнюдь не все. И вот тут на первый план выходит совсем другой критерий — эффективность и производительность труда человека, сидящего за компьютером. И на взгляд автора, оптимизировать следует именно эту сторону, то есть не скорость работы компьютера, а скорость работы за компьютером. В конце концов, ведь компьютер для человека, а не наоборот.

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

Проведем простенький расчет: допустим, вам удалось сократить время загрузки с одной минуты до 30 секунд. Казалось бы, результат весьма неплох. Но перед этим вы полдня провели, читая разные форумы, сравнивая и анализируя полученную информацию, решая, что именно следует предпринять. Итого для экономии 30 секунд на каждой перезагрузке потрачено 4 часа (14400 секунд). Нетрудно подсчитать, что эти затраты оправдаются через 480 перезагрузок, и только после этого (при загрузке раз в день — примерно через полтора года) вы начнете получать выгоду. Причем не исключено, что за эти полтора года вы купите новый компьютер или переустановите систему, и затраты на «оптимизацию» окажутся просто впустую потраченным временем. В лучшем случае вы получите косвенную выгоду за счет дополнительно приобретенных знаний, но право же, эти знания можно было приобрести и другим, более легким путем.

Но возможность увеличить скорость загрузки никто и не отрицал. А вот оценить полезный эффект от изменения настроек не удалось, насколько известно автору, еще никому. Впрочем, можно привести наглядный пример. Сравнительно недавно в форуме (и еще минимум в двух других) с целью «обсуждения системных служб Windows 7, их оптимизации и методов контроля изменения производительности (скорость загрузки ОС и т. д.) при оптимизации» была создана тема. И хотя участнику сразу говорили (на разных форумах), что проку от этого нет, он, однако, не поверил и решил перепроверить всё сам. В итоге появилась на свет статья, в которой человек после личной проверки пришел к тем же самым результатам. Остается надеяться, что гонорар за статью хотя бы частично окупил потраченное время.

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

Если вы видите совет установить некое значение в параметре SecondLevelDataCache, вспомните, что этот параметр перестал использоваться начиная с Win2000 SP1. Утверждения, что параметр DisablePagingExecutive увеличивает скорость работы системы, неверны: он увеличивает скорость отклика системы за счет некоторого снижения производительности в целом. Рекомендация установить число ядер в настройках Msconfig для ускорения загрузки в лучшем случае бесполезна, ведь система и так по умолчанию использует все ядра. Зато уже были примеры, когда человек, сменив двухъядерный процессор на четырехъядерный и забыв восстановить исходное значение настройки, недоумевал, куда же делись два добавленных ядра.

Заключение

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

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

оптимизация вывода графики на железе..

по идее это..
использовать половину z буфера и очищать его тока раз в 2 сек..
но не всегда подходит и не знаю наскока это акуально для современого железа

неочищать буфер цвета, это зделалает или SkyBox\Dome или геометрия уровня.

использование клип планов.

выводить многоугольники от переда к заду.. к кул тестом
пи этом прозрачные многоугольники выводить с зада на перед или без записи в Z и всегда без кулинга.

это высвобождает море филрейта, но встает проблема их сортинга.
у меня не получилось это делать достаточно быстро(чтоб себя оправдать) имхо полигонов много и мелких.

тут есть конечно встречное предложение к нашим гуру :) — нет ли у них имплементации всего(да хотя бы кусорта с поддержкой всех новомодных «фич» аля SSE1\2 3DNow+

Kashey
> использовать половину z буфера и очищать его тока раз в 2 сек..
раз в два кадра.
это не актуально, может вызвать непредвиденный геморой, и не подходит для всего подряд.

Ты знаешь, отключил очистку буфера кадра. Прикинь, +10 ФПС на постой! Клёвая идея :)

Я слышал, что на некоторых карточках бывают баги, если очищая frame buffer, не очищаешь Z, и наоборот.
Сам не видел, но и специально не проверял.

Semen
глюк на нывается «мигание». во всех кваках виден если с помошью noclip выйти за пределы уровня.

wat
прор 2 карда это понятно. и насчет гемороя тоже. и 32 бит мало.

так всеже как их так побыстрее отсортировать?

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

Semen
Не слышал такого бага. У nVidia колор буфер лежит в одном DWORD, а Depth+Stencil в другом DWORD
У ATI depth может быть 32-бита

CybeRUS
> У nVidia колор буфер лежит в одном DWORD, а Depth+Stencil в другом DWORD
А я что, спорю? :)
За что купил, за то и продаю.

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

Поскольку ОБЫЧНО БОЛЬШИНСТВО полигонов от кадра к кадру не меняют очередь.

А вот если камера скакнула в другую область и ли началась сцена , ничего не поделаешь надо сортировать
. опять же если есть дерево какое то может помочь .

Оптимизация вывода графики (многопоточность)

1000000] получить DataSeries[

2000], что прекрасно реализуется в моей функции. Но вот беда, если пускать это преобразование в потоке GUI, то это занимает несколько секунд, что не есть хорошо(на протяжении этого времени GUI поток «мертв»). И захотел я обойти это следующим образом: в обработчике события(GUI-поток) ставлю на холст анимашку, которая говорит, что происходит рисование, в другом потоке провожу конвертацию DataCollection, передаю результат в GUI поток и отрисовываю свои

2000 точек. В таком случае, по идее, GUI поток не будет мертв, пользователь будет в восторге. Возникли проблемы в реализации этого механизма: в wpf практически все наследоваио от DispatcherObject, т.е. не может вызываться из других потоков. Как именно мне передать DataCollection в другой поток, как передать преобразованную DataCollection обратно и отрисовать ее? Заранее спасибо за помощь! P.S. уже намаялся с Dispatcher, BackgroundWorker etc.

0.3 секунды. P.S.S. на данный момент я остановился на реализации через расшаривание коолекции для нескольких потоков с помощью .NET 4.5. Могу ли я обратиться к произвольному свойству (только прочитать его) из другого потока?

миллионы) количества точек, делал все из основного потока и перебор/фильтрация значений занимали в несколько раз меньше времени чем отрисовка (в WPF отрисовка вообще ужасно тормозная, хотя вроде как аппаратное ускорение поддерживает).

Как настроить параметры производительности графики для отдельных приложений?

Для настройки производительности графической подсистемы нужно перейти в панель Параметры → Система → Дисплей → Настройки графики, куда проще добраться через поиск на панели задач по запросу «Настройки графики».

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

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

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

Илон Маск рекомендует:  Isindex простой поиск по ключевым словам
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
04.05.2010, 20:50 #1