Оптимизация директа: Оптимизация и более сложные темы, касающиеся игр DirectX — UWP applications

Содержание

Оптимизация и более сложные темы, касающиеся игр DirectX — UWP applications

  • Статья
  • Чтение занимает 2 мин
  • Участники: 4

Были ли сведения на этой странице полезными?

Да Нет

Хотите оставить дополнительный отзыв?

Отзывы будут отправляться в корпорацию Майкрософт. Нажав кнопку «Отправить», вы разрешаете использовать свой отзыв для улучшения продуктов и служб Майкрософт. Политика конфиденциальности.

Отправить

В этой статье

В этом разделе представлены сведения об оптимизации производительность игр DirectX и о других более сложных темах.

В разделе «Асинхронное программирование в играх» рассматриваются различные вопросы применения асинхронного программирования для распараллеливания некоторых компонентов и многопоточности для максимального использования возможностей графического процессора.

В разделе «Обработка сценариев удаления устройства в Direct3D 11» используется пошаговое руководство, описывающее, как игры, разработанные с помощью Direct3D 11, могут определять и реагировать на сброс, удаление или изменение видеоадаптера.

В разделе «Множественная дискретизация в приложениях UWP» описывается, как использовать сглаживание с множественной дискретизацией — графический метод, позволяющий сделать линии стыков в играх UWP, созданных с помощью Direct3D, менее заметными.

В разделе «Оптимизация ввода и цикла отрисовки» содержатся рекомендации по выбору правильного параметра обработки событий ввода для управления задержкой ввода и оптимизации цикла отрисовки.

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

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

Эффективный анализ статистики и полноценная ручная оптимизация кампаний в Яндекс Директе по CPA/ROI — CMS Magazine

Больше не нужно искать и обзванивать каждое диджитал-агентство
Создайте конкурс на workspace.ru – получите предложения от участников CMS Magazine по цене и срокам. Это бесплатно и займет 5 минут. В каталоге 15 617 диджитал-агентств, готовых вам помочь – выберите и сэкономьте до 30%.
Создать конкурс →

Вступление

Прежде чем анализировать и оптимизировать рекламные кампании в Яндекс Директ, нужно получить статистические данные, с которыми будем работать.

Я расскажу, как быстро получить детальную статистику по каждой рекламной кампании в обход API Яндекс Директа.

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

  1. Анализ рекламных блоков (спецразмещение и гарантия).

  2. Поиск неэффективных площадок в РСЯ и их отключение.

  3. Влияние изображений на эффективность рекламы. Оставляем только лучшие изображения. Расскажу, как дополнить данные из Яндекс Директа еще и статистикой из Google Analytics, как экспортировать эти данные без ограничений и семплирования за любой период. Продемонстрирую еще один кейс на основе полученных данных:

  4. Анализ ROI и оптимизация ставок.

Полуавтоматическая выгрузка статистики из Яндекс Директа в обход API
  1. Нужно зайти в «Мастер отчетов» любой кампании и выбрать необходимые данные для выгрузки.

  2. Скопировать ссылку на XSL-файл внизу страницы результатов. В ссылке нас интересуют только два значения: название файла (пример: 03.09-10.09_main8598616.xls) и ID кампании (GET параметр cid).

  3. Теперь нам нужны ID всех кампаний, по которым требуется получить статистику. Удобнее всего их скопировать из Директ Коммандера.

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

  5. Выгружаем отчеты по этим ссылкам при помощи менеджера закачек. Важно, что менеджер закачек должен уметь поддерживать возможность авторизации на сайте (я использую дополнение Chrono для браузера Chrome).

  6. В результате получаем множество xls-файлов.

  7. Теперь все это нужно объединить в один файл Excel. Для этого я использую надстройку под названием PLEX (http://www.planetaexcel.ru/plex/). Первым шагом собираем все в один файл при помощи функции «Сборка листов».

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

Данные есть, можем начинать анализировать. Для этих задач я использую сводные таблицы Excel.

Анализ статистики вызывает трудности и даже эта статья не помогла вам разобраться как именно получать статистику в обход API Яндекс Директа?

На выручку всегда готовы прийти специально обученные люди!

Оптимальный вариант — это обращение к компаниям–участникам рейтинга агентств контекстной рекламы.

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

Анализ рекламных блоков

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

Так мы сразу видим фразы с низким CTR и есть смысл обратить на них особое внимание. Возможно, стоит переписать объявления на более релевантные.

Анализ площадок в РСЯ

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

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

Анализ изображений

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

Я думаю, все понимают, что объявления с изображениями работают эффективней. В данном кейсе я наглядно это сравнил. Добавление изображения существенно повышает CTR объявлений. В данном случае он увеличился почти в 3 раза. На 20% увеличился коэффициент конверсий и CPA снизился на 20%.

Обязательно добавляйте изображения к объявлениям на РСЯ!

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

Для этого снова используем сводные таблицы Excel, но уже по конкретным изображениям. Чтобы загрузить изображения в Excel, удобно использовать надстройку PastePictures http://excelvba.ru/programmes/PastePictures).

Сразу видим объявления с высоким CPA и можем отключить объявления с такими изображениями, чтобы заменять их более эффективными.

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

Экспорт дополнительной статистики из Google Analytics

Бывают случаи, когда данных из Яндекс Директа недостаточно. Например, когда нам нужно рассчитать ROI/ROMI, нужно знать доход. Эти данные мы можем получить из Google Analytics. Но для этого важно не забывать размечать ссылки (проставлять UTM-метки) в рекламных кампаниях.

Для выгрузки статистики из Google Analytics предпочитаю использовать надстройку для Excel под названием NEXT Analytics (http://www.nextanalytics.com/). Данный инструмент не имеет ограничений на количество выгружаемых строк (например, выгрузить 200 тыс. строк для него не проблема), умеет обходить семплирование.

Процесс семплирования подразумевает анализ определенной выборки данных вместо всего объема для экономии аппаратных ресурсов серверов Google Analytics.

Когда Google семплирует данные?

  • Если любой запрашиваемый отчет содержит более 1 000 000 уникальных параметров, например, реффералов или ключевых слов;
  • Если запрашиваемый отчет подразумевает обработку более 500 000 сессий пользователей.

Анализ ROI и оптимизация ставок

Создаем сводную таблицу по кампаниям, рассчитываем различные параметры, такие как CPO, ROI, CR.

  1. Из формулы расчета ROI можно вывести формулу для расчета оптимальной ставки (CPC) для требуемого ROI. Она имеет следующий вид: CPC = Доход / (ROI + 1) * Клики.

  2. Для расчета ставки задаем необходимые данные, в данном случае это:После расчета оптимального CPC рассчитываем финальную ставку (FinalCPC). Результат её расчета вы можете увидеть в крайнем правом столбце в таблице на рисунке выше. Теперь наши расчетные ставки прогружаем в Яндекс Директ. Для этого мне удобнее всего использовать Коммандер.

    • ROI — планируемое значение, которое нужно получить в результате оптимизации ставок.

    • Transactions — минимальное количество транзакций на кампанию для расчета отимального CPC. Если для кампании это значение меньше, то используем среднее значение по всем кампаниям.

    • MaxCPC — максимальная ставка CPC, которую мы готовы платить.

    • MinCPC — минимальная ставка CPC.

    • RateCPC — разница в процентах между CPC и финальной ставкой в Яндекс Директе. Дело в том, что при помощи формулы мы рассчитываем среднее значение CPC, а в Яндекс Директе должны указать максимальную ставку клика. Обычно эта разница составляет порядка 15-20%. В данном случае я жестко указываю эту разницу, но ее так же можно рассчитать и для каждой кампании на основе данных за предыдущий период.

  3. После расчета оптимального CPC рассчитываем финальную ставку (FinalCPC). Результат её расчета вы можете увидеть в крайнем правом столбце в таблице на рисунке выше. Теперь наши расчетные ставки прогружаем в Яндекс Директ. Для этого мне удобнее всего использовать Коммандер.

Заключение

Ручная оптимизация — это круто!

  • Умейте/учитесь оптимизировать рекламные кампании собственными руками.

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

  • Системы автоматизации контекстной рекламы — это круто! Но их использование далеко не всегда целесообразно и рентабельно.

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

  • Изучайте Excel! Это the must для интернет-маркетологов!

P.S. Хочу поблагодарить Александра Налётова из агентства Artics за идею с автоматизацией выгрузки статистики из Яндекс Директа.

P.P.S. Видео выступления:

Оригинал: http://blog.cubeline.ru/effektivnyj-analiz-statistiki-i-polnocennaya-ruchnaya-optimizaciya-kampanij-v-yandeks-direkte-po-cparoi.html


Как вести Яндекс Директ — ведение, аналитика и оптимизация

В этом видео расскажу, что такое ведение в Яндекс Директ, для чего оно нужно и как мы в Agency IMA занимаемся именно ведением и оптимизацией компании.

Для чего это необходимо?

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

На поиске вам необходимо:

Отчет «поисковые фразы»

  • Во-первых, проверять в мастере отчетов отчет «поисковые фразы», чтобы смотреть по каким конкретно запросам к вам на сайт заходят, либо по каким запросам ваше объявление высвечивается.
  • То есть для более полного и правильного ведения вам необходимо смотреть отчет именно по показам, то есть даже если фактически не было клика.
  • Переходите в отчет «поисковые фразы» – удаляете фильтр в расширенном меню, которое снизу – после этого жмете «показать отчет» – и не забудьте выставить правильную дату.
  • Затем выгружаете его в Эксель – удаляете лишние столбцы – и сортируете от А до Я все фразы, по которым были показы и клики по вашей рекламе.
  • Затем выделяете те слова, либо фразы, которые не относятся к вам, выделяете их в отдельный список.
  • Затем их нужно добавить в настройках поисковой компании в минус-слова.
  • Таким образом вы вычищаете некачественный трафик.

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

Аналитика срезов при самостоятельном ведении рекламы в Яндексе
  • Здесь мы должны смотреть различные срезы, чтобы найти и выявить отклонения.
  • Например первое что смотрим – это анализ по группам ключевых фраз в компании.
  • Вы можете посмотреть, какая конкретно группа работает лучше.
  • Далее поочередно смотрим несколько различных отчетов, оставляя в правой колонке те же самые настройки, а в левой убирая галочку с группы компаний и ставя сначала фразы – смотрим отдельно по фразам. Может быть какая-то одна съедает весь бюджет, и с неё совсем нет конверсии.
  • Далее просматриваем отдельно пол, отдельно возраст. Если у вас много кликов, вы можете ставить две галочки «пол» и «возраст», и посмотреть конкретно какой пол-возраст работает хорошо, а какой плохо.
  • Также смотрим регион таргетинга и местонахождения
  • Есть отчет по устройствам. Может быть у вас с мобильных устройств большой процент отказа и нужно снижать ставки на все мобильные устройства
  • И так далее поочередно просматриваем все отчеты.

Особенности ведения РСЯ в Директ

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

Тут мы обращаем внимание на следующее:

  • если на какой-то конкретной площадке слишком высокий CTR, то это может говорить о том, что там идет скликивание
  • либо если у нас на какой-то площадке большой процент отказов, то это точно так же говорит о том, что её стоит отключать и т.д.

То есть в процесс ведения рекламной компании входит:

  • Просмотр мастера отчетов
  • Отчёт по поисковым фразам
  • Обязательно ведение дневника-журнала вашей рекламной компании. В котором вы указываете какие конкретно вы внесли изменения и правки, чтобы в дальнейшем можно было отслеживать какое изменение привело к положительному или отрицательному результату

Внесения корректировок после аналитики рекламы

Если после просмотра отчетов, вы видите, что у вас заходы с мобильных плохо конвертят или наоборот хорошо конвертируются мужчины возрастом 25-34 года  – вы заходите в настройки рекламной компании, будь то поисковая или РСЯ и переходите в меню корректировки ставок. Там вы можете на мобильные снизить ставку на определенный процент, а на определенный пол и возраст повысить ставку.

DirectX 8.0: Вопросы и ответы

Избавляет ли DirectX 8.0 (далее DX8) программистов от рутины? Это правда, что кода теперь необходимо писать меньше?

Да, исходного кода теперь надо писать существенно меньше. Гораздо проще выполняется инициализация D3D. Раньше было необходимо вызвать 20-30 различных функций в строго определённом порядке и со строго определёнными параметрами! А теперь необходимо заполнить структуру, состоящую из приблизительно 10-ти параметров, и сделать всего два вызова. Кроме того, упрощен процесс создания текстур и картинок, не надо каждый раз заполнять запутанные структуры заранее определёнными параметрами — только один вызов функции (6 параметров) и всё!

Как Вы оцениваете быстродействие DX8? Есть существенные изменения для старого и нового (написанного под DX8) обеспечения?

Игры, не рассчитанные на DX8, получают 5-10% прироста производительности благодаря более качественным библиотекам DX7, которые, разумеется, входят в состав DX8 для совместимости.

Игры, специально написанные для DX8, могут получить прирост производительности от 5% до 50% в зависимости от используемых ими возможностей DX8. Максимальный прирост может быть обеспечен при повсеместном использовании шейдеров вершин (vertex shader’s) и обязательном наличии DX8 совместимого ускорителя.

Нужна ли оптимизация приложения для DX8, чтобы разницу с DX7 стала заметна?

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

Получается, что если установить DX8, драйверы DX8, и запустить приложение, созданное для DX7 ранее, мы не увидим ничего нового в смысле скорости и качества?

В смысле качества — ничего (по крайней мере, я ничего не заметил), в смысле скорости — см. вопрос о производительности.

Как обстоят дела с удобством написания и легкостью прочтения исходного кода?

Просто нет слов — по сравнению с DX7 всё стало настолько прозрачнее и удобнее, что даже трудно подобрать соответствующие эпитеты!!! 🙂

Говорят, что DX7 соответствует по возможностям OGL 1.2, а как обстоит дело с DX8?

У OpenGL (далее OGL) есть расширения (extensions) — универсальный механизм добавления новых возможностей. Создал новое расширение — получил доступ к новым возможностям аппаратуры. Здесь есть одна сложность (со слов Tony Cox): в 2001 году выйдут DX8 совместимые карты от различных производителей (как минимум, ATI и NVIDIA). Новые возможности этих карт, как обычно, будут поддержаны соответствующими OGL расширениями, но нет никакой гарантии, что это будут одни и те же расширения для одинаковых возможностей. И вам придется писать код с учетом всех существующих карт, как это уже не раз было…

Пиксельных и вершинных шейдеров в OGL нет, а они, несомненно, ОЧЕНЬ большой шаг вперёд как с точки зрения удобства, так и универсальности API. И хотя шейдеры можно сделать доступными через систему OGL расширений, это будет набор вызовов, а не данные. К тому же, у разных производителей вызовы (т.е. расширения) будут собственными!

Хочется еще немного добавить про концепцию пиксельных и вершинных шейдеров. С появлением аппаратного ускорения сразу же теряется гибкость (как правило, в любой области). Появилась аппаратная растеризация и мы потеряли возможность гибкой обработки 2D картинки и произвольных мультитекстурных эффектов. Остались только те операции, которые нам позволяет железо. Появился аппаратный T&L (трансформация и освещение) и пропала возможность гибкого влияния на процесс преобразования координат и освещения примитивов. Концепция шейдеров словно частичный «возврат долгов» программистам от производителей железа — теперь программисты могут достаточно гибко влиять на трансформацию геометрии (вершинные шейдеры) и на процесс растеризации (пиксельные шейдеры).

Что принципиально нового дают шейдеры, чего нельзя сделать механизмами DX7? Перечислим несколько очевидных отличий (хотя их общее количество очень велико)!

1. Mesh morphing (морфинг модели) — есть две 3D модели, вычисляется промежуточная стадия плавного превращения из одной в другую под управлением плавающего коэффициента от 0 до 1.

Все ролики, на которые есть ссылки в данной статье, записаны в формате DiVX, для их просмотра в стандартном MS Media Player вам необходимо скачать и установить себе кодек: http://www.divx.nm.ru/soft/DivX311alpha.EXE (516 Кб)

2. Motion blur (смазывание движения) — основанное не на многоразовом расчете сцены, а на более продвинутом подходе (работе с вершинами).

3. Большое число источников света (более 8) — ограничено только количеством специальных регистров ускорителя, задействованных шейдером!

4. Скининг с использованием большого числа матриц (ограничено только количеством специальных регистров и составляет приблизительно 20 матриц на одну скелетную прямую!

5. Layered fog (слоистый туман) — многоуровневый туман (в оврагах, над водой слоем и т.д.)

И это только некоторые примеры вершинных шейдеров!

Шейдер представляет собою программу на специальном коде, которую любой DX8 совместимый ускоритель исполняет аппаратно. Количество инструкций (размер кода) вершинного шейдера ограничено 127. Каждая инструкция выполняется приблизительно за 1 такт ускорителя. Среди инструкций — различные арифметические операции и условия, выполняющиеся над специальным набором регистров. По сути дела, в ускорителе присутствуют два специализированных программируемых процессора, один из которых используется для обработки координат вершин (трансформации) и задания начальных параметров (установки) треугольников, а второй для вычисления результирующего цвета каждой точки при их закраске (растеризации).

Кстати, графические процессоры GeForce/GeForce2 (а значит, и карты на их основе) не поддерживают vertex shader’ы. Таким образом, на этих GPU возможна работа через DX8 только в режиме Software T&L, в результате теряется весь выигрыш от HW T&L (его просто нет).

Что касается карт на базе GPU Radeon, то тут ситуация аналогична GeForce/Georce2, т.е. карты на этих чипах не поддерживают vertex shader. При этом драйвер позволяет реализовать эту поддержку в режиме SW T&L (+ все бонусы под оптимизированный вертекс буферов). Но при этом HW T&L остаётся полностью незадействованым!

С пиксельными шейдерами всё обстоит несколько сложнее. Основные эффекты:

1. Собственные модели освещения (Phong, Blinn, BDRF и все что угодно).

2. Реалистичные тени (когда даже бугорки рельефа отбрасывают корректные тени).

3. Плоскости отсечения произвольной конфигурации с точностью до пикселя.

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

Теперь хотелось бы упомянуть о микрополигонах. Микрополигоны в понимании DX8 — это то, что во всех играх называется частицы (particles), т.е. маленькие плоские картинки в 3х мерном пространстве, лежащие в плоскости экрана. Реализация микрополигонов содержит в себе множество ограничений:

  1. Максимальный размер = 64 пикселя
  2. Текстура наносится на него только целиком.
  3. Невозможны манипуляции с текстурными координатами.
  4. Никакого мультитекстурирования.

Зачем столько ограничений? Дело в том, что скорость растеризации этих микрополигонов в 2 раза выше, по сравнению с обычными. А если учесть, что на частицу обычно уходит 2 полигона, то в 4 раза выше. (Кстати, скринсэйвер iXBT как раз и использует подобные частицы, если бы он был написан под DX8 с использованием микрополигонов, он получил бы 2-х кратный прирост скорости)!

Но, тем не менее, строгие ограничения сильно сужают область применения подобных частиц. Их можно прекрасно использовать в эффектах на основе большого количества частиц с одинаковой текстурой — снег, дождь, огонь, облака… Ранее на подобные эффекты существенно не хватало мощностей (когда я увидел ливень в Metal Gear Solid 2, я понял, что все виденные мною на PC дожди просто убогие), приличная тучка или костер беззастенчиво требуют 4000-8000 тысяч микрополигонов. По разным данным, на Xbox будет обрабатываться от 150 до 300 миллионов микрополигонов в секунду (т.е. 3 миллиона капель дождя в кадре при 100 fps).

В DX8 включена новая надстройка к Direct3D — D3DX8. Если раньше (в DX7) это был просто набор утилит и функций, то теперь это мощная система, которая включает в себя:

1. Класс мультитекстурных эффектов, загружаемых из текстового файла.


Видео-ролик: cem.avi (1.02 Mb)

2. LOD технологию на основе т.н. «прогрессивных» моделей.

3. Кэш-оптимизация моделей.

И много других, мелких, но не менее функциональных вещей…

Есть и еще два новшества в DX8, о которых стоит рассказать отдельно:

Volume texture — объёмные текстуры. Вещь интересная, но противоречивая — с одной стороны, при помощи этих текстур можно создавать всевозможные объёмные эфемерные эффекты, а с другой стороны, расход текстурной памяти будет таким, что ничего не оправдается!!! Для Volume texture обязательно требуется аппаратная поддержка.

High order primitive rendering — поддержка динамической тасселяции поверхностей высшего порядка (сплайнов). Вещь удивительная — на модельке исчезают углы — она становится гладенькой и кругленькой! Всё бы хорошо, но, к сожалению, осуществляется именно поддержка сплайнов, а не subdivision surfaces, т.е. отсюда сразу вытекает патчевая структура модельки и проблемы гладкого стыка патчей — а это усложнение процесса моделирования на порядок! Так что, как мне кажется, далеко не все разработчики приложений бросятся использовать эту интересную функцию DX8. High order primitive rendering требует обязательной аппаратной поддержки.

Какие кардинально новые концепции присутствуют в DX8?

Кардинально нового много:

  • Direct3D: пиксельные и вершинный шейдеры.
  • DirectPlayVoice: живое голосовое общение по сети во время игры. Этого ждали многие и уже достаточно давно. Причём эту возможность можно комбинировать с DirectSound для создания различных звуковых эффектов и с DirectPlay для передачи по интернету.
  • DirectInput также претерпел существенные улучшения. Появилась карта команд (command map) и теперь можно загрузить список СВОИХ команд и соответствующие им константы DirectInput (т.е. коды клавиш, мышь, прочие манипуляторы), и когда эти события происходят, в программу будут приходить уже ваши собственные команды! В реестре сохраняются наборы карт команд «по умолчанию» для различных типов игр, которые можно использовать сразу с этим устройством. И ещё появилось много нового, до чего я пока не добрался.

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

Здесь будут только Windows и XBox. Остальное не нужно. Причём, как мне кажется, очень скоро основной платформой будет XBox. Зачем DX другие платформы? Никто не будет играть в игры на корпоративном Linux сервере, все будут играть дома на XBox. Это моё мнение.

DX8 ориентирован строго на игры?

Да, фирма Microsoft заявляла, что OpenGL предназначен для серьёзных приложений, где устойчивость важнее скорости, а DX для игр, где нужна максимальная скорость.

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

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

У вершинных шейдеров положение гораздо лучше. При использовании с обычными карточками без аппаратного T&L они не должны давать падения производительности. Мы получим выигрыш за счёт того, что используем оптимизированные буфера вершин, а интерпретатор вершинных шейдеров наоборот спровоцирует падение производительности. Они успешно компенсируют друг друга.

По поводу «частичного» поддержания шейдеров — Microsoft против такого понятия. По сути дела, это скатиться в прошедший день несовместимых OGL расширений. Либо ты поддерживаешь весь набор команд шейдера версии N, либо ты его не поддерживаешь. С этой точки зрения карточки GF и GF2 являются переходными от DX7 к DX8 и не имеют поддержки шейдеров DX8.

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

В DX8 обобщён менеджмент ресурсов. Теперь ресурс — это не только текстура, но и буфера вершин и индексов. Внешне менеджмент не изменился — у каждого ресурса есть приоритет, и драйвер (или D3D) перемещает этот ресурс в соответствии с приоритетом и потребностями в той или иной памяти. Microsoft заявляет о существенном улучшении алгоритмов менеджера ресурсов DX8.

Появились ли удобные средства сохранения контекста (как в OGL), когда последовательность действий можно сохранить и поименовать для последующего обращения (списки)?

Подобная возможность была ещё в DX7 (state block). По функциональности это немного меньше, чем дисплейные списки OGL — здесь можно только записывать состояние (render state/texture stage state/transform/viewport/clip plane/texture/light/material), но нельзя записывать данные типа вершин или индексов.

Шейдеры также являются обобщением концепции state блоков — здесь мы сами строим последовательность необходимых нам действий и запоминаем ее уникальный идентификатор.

Есть ли какие либо новшества в Scene Graph API направлении?

Microsoft обещала соответствующий API, но ничего не сделала в DX8. Есть подозрение, что это направление будет закрыто. В DX8 на него нет никаких намёков.

Приложение: Информация о новых возможностях DX8

DirectGraphics

Полная интеграция DirectDraw и Direct3D

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

Язык программирования для обработки вершин

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

Язык программирования для обработки пикселей

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

Multisampling rendering

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

Точечные спрайты

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

Объёмные текстуры

Эффект ослабления с расстоянием для попиксельного освещения, объёмные атмосферные эффекты и прочее…

Поддержка примитивов высшего порядка

Улучшает внешний вид моделей и облегчает их перенос из основных систем 3D моделирования.

Высокоуровневые технологии

Включают plug-in’ы экспорта в Direct3D моделей и скинов, адаптивно детализированной геометрии (LOD) и поверхностей высокого порядка (сплайны).

Расширения библиотеки утилит (Direct3DX)

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

DirectAudio

Компоненты, предназначенные для работы со звуком, претерпели значительные изменения. DirectMusic и DirectSound стали более унифицированными API для проигрывания всех форматов, было добавлено множество новых возможностей по его обработке, в том числе динамической. Перечислим новые возможности:

Обработка звуковых данных на основе сообщений (MIDI) и цифрового представления звука (WAV) на основе единого механизма воспроизведения и обработки.

Теперь WAV файлы и ресурсы могут быть загружены и проиграны стандартными средствами DirectMusic. Хотя DirectSound API по прежнему поддерживается, в большинстве случаев гораздо проще переложить воспроизведение, подкачку и синхронизацию заранее созданных аудио потоков на DirectMusic. Для более сложных приложений, оцифровки звука и полнодуплексной обработки по-прежнему выгоднее использовать DirectSound.

Более гибкая модель внутренней передачи и обработки данных (audiopath model).

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

DLS2 синтез

Теперь полностью поддерживается DLS2 формат банков и синтез, включая огибающие с 6 стадиями, слои, дополнительные низкочастотные осцилляторы и прочие возможности, подсмотренные у таких профессиональных форматов, как SoundFont 2.0 (до 2.1 DSL2 еще крайне далеко). Есть подозрение, что теперь большинство средних sf2 банков можно будет конвертировать в DLS2 (и воспроизводить) практически без потерь.

Специальные эффекты

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

3-D звук

DirectX Audio поддерживает обработку потоков с помощью стандартных пресетов (для reverberation, obstruction, occlusion) в соответствии с I3DL2 (Interactive 3-D Audio Level 2) спецификацией, а также позволяет настроить параметры этих эффектов по своему желанию.

Аудио скрипты

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

Расширена поддержка контроллеров MIDI

Огибающие могут управлять как RPN, так и NRPN контроллерами.

Значительно расширено управление воспроизведением

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

Например, для того, чтобы сменить базовые аккорды.

Контейнер

Объект позволяющий сохранить все компоненты, созданные DirectMusic Producer в одном файле, и потом загрузить их одним вызовом.

Lyrics треки

Поддержка текстового сопровождения, синхронизированного с музыкой. Появился объект, представляющий песню (Song)

Он хранит в себе сегменты, автоматизируя их воспроизведение, и автоматически генерируя переходы между ними.

Улучшено кэширование данных

Как и в прочих службах.

DirectPlay

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

Полностью переписаны интерфейсы

Сложность создания сетевого приложения значительно уменьшена благодаря отделению интерфейсов для peer-to-peer и client/server сессий. Интерфейсы для создания сессии DirectPlay следующие:

  • IDirectPlay8Peer Предоставляет методы для создания peer-to-peer сессий.
  • IDirectPlay8Client Предоставляет методы для создания клиентской части приложения типа client/server.
  • IDirectPlay8Server Предоставляет методы для создания серверной части приложения типа client/server.

Добавлена передача звука

  • DirectPlay Voice предоставляет набор интерфейсов для создания голосовых коммуникаций реального времени в приложениях. Определены следующие интерфейсы:
  • IDirectPlayVoiceClient Предоставляет методы для создания и управления клиентом в сессии DirectPlay Voice.
  • IDirectPlayVoiceServer Предоставляет методы для создания и управления сессией DirectPlay Voice.
  • IDirectPlayVoiceSetup Используется для тестирования и настройки DirectPlay Voice audio.

Информация об адресах базируется теперь не на GUID, а на URL

Предыдущие версии DirectPlay адресовали бинарные данные, используя GUID, что было сложно в реализации и нечитабельно для человека. В DirectX 8.0 DirectPlay вводит представление адресов в URL формате. Для создания и манипуляций с новым форматом адресации существуют следующие интерфейсы:

  • IDirectPlay8Address Предоставляет общие адресные методы для создания и управления DirectPlay addresses.
  • IDirectPlay8AddressIP Предоставляет сервис, ориентированный на провайдера по выделению IP.

Добавлена бОльшая масштабируемость и улучшенная система управления памятью

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

Улучшена поддержка Firewalls и Network Address Translators

Написание сетевых игр, которые проходят через Network Address Translators (NATs), Firewalls, и другие методы разделения интернет-соединений, может быть сложным, особенно для протоколов с негарантированной доставкой (UDP). DirectPlay 8.0 поддерживает NAT-решения (где это возможно) для облегчения жизни разработчикам. DirectPlay 8 TCP/IP service provider использует одиночный UDP порт, определяемый разработчиком, для игровых данных, позволяя настраивать firewalls и NATs соответственно.

DirectInput

Microsoft DirectInput for Microsoft DirectX® 8.0 вводит новую возможность: переопределение действий (action mapping). Переопределение действий позволяет установить соответствие между actions и devices, которые не зависят от наличия каких-то специфических частей (например, дополнительные оси или кнопки). Переопределение действий упрощает цикл ввода и упраздняет необходимость в отдельных профилях (custom game drivers, custom device profilers, и custom configuration user interfaces) в играх.

Стратегия оптимизация конверсий в Яндекс.Директ в 2022

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

Принцип работы стратегии оптимизация конверсий в Яндекс.Директ

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

Чтобы поставить данную стратегию необходимо перейти в «Редактирование» кампании.

Далее нажимаем на вкладку «Стратегия».

Далее выбираем «Оптимизация конверсий».

Также указываем где будет осуществляться показ:

  • Только в поиске;
  • Только в сетях;
  • На поиске в сетях.

Указываем модель атрибуции, среди которых:

  • Последний переход из Яндекс.директ;
  • Последний значимый переход;
  • Последний переход;
  • Первый переход.

Указываем цель для оптимизации.

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

  • Среднюю цену конверсии;
  • Недельный бюджет;
  • Максимальная цена клика.

Второй тип по недельному бюджету, где достаточно задать:

  • Недельный бюджет;
  • Максимальную цену клика.
  • Распределенный.

После этого отправляем кампанию на модерацию.

Смена стратегии на оптимизацию конверсий в Директ.Коммандер

Для этого выбираем нужную кампанию и кликаем на соответствующий пункт в правой части экрана.

Далее указываем все те же данные, что в и веб-интерфейсе, но без модели атрибуции.

Последний пункт можно указать отдельно чуть ниже стратегии.

После этого сохраняем изменения и отправляем их на сервер.

Просмотр статистики

Посмотреть данные по конверсиям и кликам потребуется перейти в «Статистика»-«Статика по всем кампаниям».

После открываем вкладку «Мастер отчетов» и выбираем ключевые цели в качестве конверсий.

Дополнительно добавляем в столбцы следующие данные:

Далее можно увидеть таблицу с данными.

При необходимости можно скачать статистику в Excel или CSV кликнув на «Экспорт».

Что такое CRO (оптимизация коэффициента конверсии)?

Гипотезу можно разбить на три основных элемента.

  1. Конкретное изменение . На основе выводов, полученных из количественных и качественных данных, эту переменную необходимо изменить и протестировать.
  2. Конкретный эффект — это цель, показатель конверсии или аналогичный элемент, который нуждается в улучшении.
  3. Особая причина – Обоснование того, почему это конкретное изменение может привести к желаемому эффекту.

Вот пример хорошей гипотезы:

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

Вот расплывчатая, неэффективная гипотеза:

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

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

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

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

 

Шаг 3. Приоритизация

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

Чтобы помочь вам расставить приоритеты в тестировании CRO, мы рекомендуем использовать популярную систему оценки ICE, разработанную Шоном Эллисом из GrowthHackers:

.

 

Воздействие

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

 

Уверенность

Насколько вы уверены, что это окажет желаемое влияние? Этот элемент
может быть сложным, потому что он немного более субъективен.Если возможно, используйте данные из предыдущих тестов на аналогичных страницах, чтобы помочь вам количественно оценить уровень уверенности. Если вам нужно работать с интуицией, используйте здравый смысл.

 

Легкость

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

 

Чтобы получить свой балл ICE, присвойте каждому элементу балл от 1 до 10, где 10 — самый высокий балл. Затем перемножьте все три числа вместе. Продукт — это ваша окончательная оценка ICE.

Допустим, вы поставили странице 9 баллов за влияние, 6 за уверенность и 3 за простоту. Оценка ICE — 162. Страницы с наивысшей оценкой ICE должны быть вверху списка.

Использование схемы оценки ICE — это быстрый и эффективный способ помочь вам расставить приоритеты в деятельности CRO.Это поможет вам быстрее достичь своих целей (и с меньшим количеством препятствий!)

 

Шаг 4. Тестирование

Тестирование является основополагающим компонентом оптимизации коэффициента конверсии.

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

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

 

Статистическая значимость

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

Если подумать, тестирование конверсии очень похоже на проведение эксперимента.

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

Целевые директивы оптимизации

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

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

  • ALL_ROWS

    Эта директива сообщает оптимизатору выбрать план, который оптимизирует процесс поиска всех строк, которые удовлетворить запрос.

    Эта форма оптимизации используется по умолчанию.

Директива цели оптимизации имеет приоритет над средой OPT_GOAL настройка переменной и параметр конфигурации OPT_GOAL.

Для получения информации о том, как установить цель оптимизации для всего сеанса см. инструкцию SET OPTIMIZATION.

Вы не можете использовать директиву цели оптимизации в следующих contexts:
  • В определении представления
  • В подзапросе
Следующий запрос возвращает имена сотрудников кто заработал топ-50 бонусов. Директива цели оптимизации предписывает оптимизатору как можно быстрее вернуть первый полный экран строк насколько это возможно.
  ВЫБЕРИТЕ {+FIRST_ROWS
   Как можно быстрее вернуть первый полный экран строк}
   ОГРАНИЧЕНИЕ 50 fname, lname ОТ сотрудников ЗАКАЗАТЬ ПО бонусу DESC;  

Директивы оптимизатора

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

Синтаксис

Директивы оптимизатора

.-,---------------------------------------------------------------------.
В (1) |
|--+- --+ +----+-| Директивы метода доступа |---------+-+------->
+-{+ --+ | (2) |
'-/*+ -' +-| Директива о порядке присоединения |--------------+
| (3) |
+-| Директивы метода соединения |-----------+
| (4) |
+-| Директивы Star-Join |-------------+
| (5) |
+-| Директивы цели оптимизации |-----+
| (6) |
+-| Директивы режима объяснения |----------+
| (7) |
'-| Директива кеша операторов |--------'

>--+------+----------------------------------------- --------------|
+-}---+
'- */'

 

Примечания:

  1. См. Директивы по методу доступа
  2. См. См. Директива join-stather
  3. См. Директивы join-method
  4. См. Директивы STAR-JOINE
  5. См. Директивы по оптимизации. Директива кэша операторов

Использование

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

Директивы включены по умолчанию. Для получения информации о том, как обрабатываются указанные директивы, просмотрите вывод Оператор SET EXPLAIN. Чтобы отключить директивы, установите среду IFX_DIRECTIVES . переменная на 0 или установите параметр DIRECTIVES в файл ONCONFIG на 0 .

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

Целевые директивы оптимизации (IDS)

Директивы цели оптимизации (ИДС) Главная | Предыдущая страница | Следующая страница   Другие сегменты синтаксиса > Директивы оптимизатора >

Целевые директивы оптимизации (ИДС)

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

 Целевые директивы оптимизации:
 
|--+-ALL_ROWS---+--+------------+------------ -------|
   '-FIRST_ROWS-' '-  комментариев  -'
 
 
Элемент Описание Ограничения Синтаксис
комментарии Текст, документирующий директиву Должен стоять между символами комментария Строка символов

Две директивы целей оптимизации:

  • ПЕРВЫЕ_СТРОКИ

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

  • ALL_ROWS

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

    Эта форма оптимизации используется по умолчанию.

Цель оптимизации директива имеет приоритет над средой OPT_GOAL настройка переменной и параметр конфигурации OPT_GOAL.

Для получения информации о том, как установить цель оптимизации для всего сеанса, см. инструкцию SET OPTIMIZATION.

Вы не можете использовать директиву цели оптимизации в следующих контекстах:

  • В определении вида
  • В подзапросе

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

 ВЫБЕРИТЕ {+FIRST_ROWS
   Вернуть первый экран строк как можно быстрее} 
Главная | [ Начало страницы | Предыдущая страница | Следующая страница | Содержание | Показатель ]

Первая демонстрация сверхплоской и недорогой направленной антенны машинной разработки

Структура

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

Рисунок 1

Архитектура антенны: ( a ) полная структура: на верхнем слое изображена шестиугольная мозаика; ( b ) шестиугольные пиксели ( hexapix ) узора.

Была выбрана архитектура на рис. 1а; он соответствует требованиям низкопрофильности и низкой стоимости. Затем проектирование машины состоит в нахождении рисунка проводящего слоя. Последний напечатан на тонкой диэлектрической опоре, подвешенной над металлической заземляющей пластиной.Антенна питается в центре коаксиальным соединителем через заземляющий слой, а проводящий слой соединяется с центральным проводником, как на рис. 2. Общая конструкция очень тонкая, высотой \(h\ll \lambda \), где \(\lambda\) — рабочая длина волны. Все соответствующие размеры представлены на рис. 1а.

Рисунок 2

Фрагмент коаксиального канала: ( a ) вид в перспективе; ( b ) вид сбоку.

Верхний проводящий слой был разбит на 1230 гексапиксных ячеек (рис.1b), что приводит к более субволновому разрешению для формирования рисунка \(d \приблизительно \lambda/28\). Преимущество шестигранной ячейки по сравнению с обычной квадратной ячейкой заключается в ее способности предотвращать изолированные угловые контакты, которые представляют собой основную причину неопределенности на этапе производства 20 . Действительно, в предыдущей работе 21 мы использовали квадратные ячейки в конструкции аналогичной антенны с теми же характеристиками и размером. Там мы обнаружили, что невозможно удовлетворить требования как по усилению, так и по входному согласованию из-за чрезмерной производственной чувствительности, вызванной металлическими угловыми контактами.

Алгоритм проектирования

Мы видим, что в нашем подходе каждая возможная структура описывается двоичной строкой . Поэтому естественно обратиться к процессу эволюционного проектирования с помощью генетического алгоритма (ГА). ГА — это хорошо известный эвристический стохастический метод глобальной оптимизации, основанный на принципах естественной эволюции. Он нацелен на невыпуклые и нелинейные проблемы, например, возникающие при практических задачах электромагнитного проектирования 22,23,24 .

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

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

Представляется естественным рассматривать максимизацию усиления вдоль желаемого направления максимального излучения, которое в данном случае является нормалью к лицевой стороне антенны. Однако мы обнаружили, что этот выбор не был оптимальным в общем процессе. Анализ показал, что этот критерий был слишком строгим на ранних этапах эволюционного замысла: особи с высокой направленностью, но направлением излучения несколько отклоняющимся от максимального, исключались из дальнейшей эволюции с пагубными последствиями.Поэтому мы использовали более расслабленную, связанную с усилением эффективность сплошного луча 25 . Эта величина определяется как относительная доля мощности \(\Delta P(\Delta \Omega )\), излучаемой в заданном телесном угле \(\Delta \Omega\) вокруг желаемого направления луча. Для нашей цели мы использовали нормализованную эффективность пучка,

$$\begin{aligned} \hbox{BE}_{\Delta \Omega} = \frac{\Delta P(\Delta \Omega)}{P_{\ mathrm{rad}}} \frac{4 \pi }{\Delta \Omega } \end{aligned}$$

(1)

где \(P_{\mathrm{rad}}\) — полная излучаемая мощность.Телесный угол \(\Delta \Omega\) имеет значение «контрольного объема»: когда \(\Delta \Omega\) стремится к нулю, используемая эффективность пучка \({\mathrm{BE}}_{\ Delta \Omega }\) восстанавливает общее определение направленности; \(\Delta \Omega\) является одним из параметров алгоритмического проектирования, и очевидно, что он должен быть частью целевой ширины луча (например, ширина луча половинной мощности, HPBW).2\) и \(\Delta \theta\) сообщается.2\) — отношение между отраженной и падающей мощностями (с обычной отсылкой \(50\,\Омега\)). Оба индикатора, \({\mathrm{BE}}_{\Delta \Omega}\) и T , получены в результате полноволнового моделирования полной структуры для любого интересующего поверхностного рисунка.

Важно отметить, что произведение \({\mathrm{BE}}_{\Delta \Omega }\) и T имеет прямую физическую интерпретацию, будучи пропорциональным общему реализованному выигрышу антенна 25 .\beta , \qquad \alpha + \beta = 2 \end{align}$$

(3)

Это соответствует выпуклой комбинации в логарифмическом формате и обеспечивает большую гибкость по сравнению с простым произведением. Весовые показатели \(\alpha\) и \(\beta =2-\alpha\) могут быть выбраны таким образом, чтобы обеспечить сходимость к надежному решению. Подходящие значения были найдены в результате обширных испытаний по конкретной проблеме.

Наконец, отметим, что эта целевая функция также имеет физическую верхнюю границу.2}\,A_{\mathrm{geom}} \end{align}$$

(4)

где \(D_{\mathrm{max}}\) — максимально достижимая направленность на рассматриваемой площади. Это соответствует идеальной единичной (\(100\%\)) эффективности апертуры (определение см. ниже).

Таким образом, используемая фитнес-функция имеет физический смысл, она включает в себя только два устанавливаемых параметра (\(\alpha\) и \(\Delta \Omega\)), а также имеет физическую верхнюю границу.Это важно для обеспечения успешного результата.

Что касается критерия остановки , было принято решение прекратить оптимизацию, когда лучшее решение не изменилось после заданного числа поколений \(N_{\mathrm{stag}}\) (предел стагнации). В табл. 1 приведены значения основных алгоритмических параметров.

Таблица 1 Алгоритмические параметры и их значения; Параметры GA относятся к общему использованию 24 .

Моделирование

Оценка функции пригодности требует полноволнового электромагнитного анализа антенны.N I_n\;{{\varvec{f}}}_n({{\varvec{r}}}) \end{выровнено}$$

(5)

Это приводит к линейной системе через проекцию взвешенных остатков Галеркина, исторически называемую Методом моментов (MoM) в антенном сообществе,

$$\begin{aligned} {\mathbf{Z}} \,{\ mathbf {I}} = {\ mathbf {V}} \ end {выровнено} $ $

(6)

где \({\mathbf{Z}}\) — матрица системы, \({\mathbf{V}}\) — вектор падающего электрического поля, а \({\mathbf {I}}\) — вектор неизвестных коэффициентов \(I_n\) для решения.Результатом EFIE-MoM является полностью заполненная матрица \({\mathbf{Z}}\). Однако, как признано в нескольких работах 10,12 , бинарные операции, задействованные в геометрическом описании излучающей поверхности, позволяют быстро построить матрицу системы на каждой итерации. Это получается непосредственно из системной матрицы материнской структуры , состоящей из цельного металла.

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

Результаты алгоритма проектирования

Эволюцию алгоритма проектирования можно проследить на рис. 3, на котором сообщается значение приспособленности лучшего индивидуума для каждого поколения. Значение приспособленности нормализовано относительно его физической верхней границы. Алгоритму потребовалось 292 поколения, чтобы достичь сходимости (никаких улучшений в течение 100 последовательных поколений).

Рисунок 3

График сходимости генетического алгоритма.График сообщает нормализованную пригодность лучшего человека для каждого поколения. Значение приспособленности нормализуется к физической верхней границе, которая соответствует идеальному согласованию входного импеданса и \(100\%\) эффективности апертуры, с весовыми показателями (\(\alpha\), \(\beta\)) используемыми в дизайн.

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

Рисунок 4

( a ) лучший и ( b ) второй лучший индивидуумы после оптимизации ГА с соответствующими значениями приспособленности (нормализованными до физической верхней границы).Черные области представляют собой металлические узоры. Для изготовления и испытаний была выбрана лучшая конфигурация ( и ).

Антенна изготовлена ​​по оптимальной схеме, показанной на рис. 4а. Он был изготовлен по стандартной технологии печатных плат. Верхний узорчатый проводящий слой травился на слое диэлектрика I-Tera 27 толщиной 0,254 мм (рис. 5а). Этот поддерживаемый диэлектриком проводящий слой был откинут назад, а затем подвешен над металлической заземляющей пластиной с помощью (восьми) пластиковых прокладок (рис.5б). Структура питается от разъема SMA, установленного на задней стороне заземляющего слоя, при этом центральный проводник подключен к структурированному проводящему слою. Из-за обратной компоновки проводящего слоя соединение с коаксиальным штифтом обеспечивалось через металлизированное сквозное отверстие и небольшую металлическую площадку на противоположной стороне узорчатого слоя. Такой выбор позволил аккуратно припаять штифт к последней легкодоступной площадке (вставка к рис. 5б).

Рис. 5

Изготовленная антенна: ( a ) узорчатый верхний проводящий слой перед сборкой.Рисунок получается травлением меди на диэлектрической подложке; ( b ) окончательная сборка, полученная путем установки верхнего слоя вверх дном над пластиной заземления (вставка: деталь соединения центрального штифта с верхним слоем).

Результаты измерений

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

При оценке характеристик плоских антенн соответствующий показатель качества определяется эффективностью апертуры \(\varepsilon _{\mathrm{ap}}\), которая количественно определяет, какая часть поверхности эффективно излучает. Он определяется как

$$\begin{aligned} \varepsilon _{\mathrm{ap}} = \frac{A _{\mathrm{eff}}}{A_{\mathrm{geom}}} \end{aligned }$$

(7)

, где \(A_{\mathrm{geom}}\) — геометрическая площадь, а \(A_{\mathrm{eff}} = G_{\mathrm{max}}\,\lambda ^2 / 4\pi \) — эффективная площадь.

Основные показатели качества приведены в Таблице 2. Коэффициент усиления относительно стабилен во всем диапазоне с небольшим снижением при увеличении частоты. Максимальное значение 13,7 дБ получается на частоте 2,40 ГГц, при которой эффективность апертуры также достигает своего максимума \(60\%\). На частотах 2,44 и 2,48 ГГц пиковое усиление составляет 13,3 и 12,1 дБ соответственно с соответствующей эффективностью апертуры \(53\%\) и \(41\%\). Энергетическая (омическая) эффективность была оценена путем сравнения измеренного усиления и направленности, в результате чего потери составили менее 1 дБ по всей полосе пропускания.

Таблица 2 Сводка результатов измерений: \(G_{\mathrm{max}}\) — максимальное усиление, \(\varepsilon _{\mathrm{ap}}\) — эффективность апертуры, HPBW — луч половинной мощности Ширина, SLL — это уровень боковых лепестков, а \(|S_{11}|\) — входной коэффициент отражения.

Измеренные значения направленности в E- и H-плоскостях показаны на рис. 6 для частот 2,40, 2,44 и 2,48 ГГц, соответствующих нижнему, центральному и верхнему пределу диапазона ISM соответственно. Как видно, измерения очень хорошо сравниваются с моделированием с незначительными расхождениями \(< 0.3\) дБ в дальнем луче для всех частот. Поляризация излучаемых полей является чисто линейной в плоскости симметрии, как это предусмотрено в проекте, и поэтому она здесь не показана. Во всем основном луче кросс-поляризация остается ниже \(-20\) дБ. Кроме того, конструктивная симметрия заставляет диаграмму направленности в H-плоскости быть симметричной. Уровни боковых лепестков остаются удовлетворительно ниже \(-25\) дБ в E-плоскости и \(-13\) дБ в H-плоскости.

Рис. 6

Смоделированная и измеренная направленность в E- и H-плоскостях для оптимизированной антенны в точке 2.40 ГГц ( a ), 2,44 ГГц ( b ) и 2,48 ГГц ( c ).

Что касается входного коэффициента отражения (рис. 7), предлагаемая антенна демонстрирует удовлетворительное согласование по всей расчетной ширине полосы со значениями \(|S_{11}|\) ниже \(-10\) дБ и ниже \(-15,6\) дБ на центральной частоте, где проводилась оптимизация. Сравнение с модельными данными показало небольшое смещение резонансного пика, что можно объяснить трудностями точного моделирования подачи.Независимо от этого, эталонная полоса пропускания на уровне \(-10\) дБ остается сравнимой в двух случаях: 86 МГц, полученные при моделировании, и 109 МГц, полученные при измерениях.

Рисунок 7

Измеренная и смоделированная величина входного коэффициента отражения.

Обсуждения

Мы представили новую процедуру прямого проектирования плоских направленных антенн. Формирование поверхности достигается путем включения/удаления шестиугольных ячеек; это делает оптимизацию эффективной и свободной от производственных неопределенностей.Проект основан на генетическом алгоритме в сочетании с электромагнитным решателем граничных элементов.

Процедура применялась для проектирования антенны для диапазона частот ISM 2,4 ГГц. Антенна была изготовлена ​​и измерена. Измерения подтвердили удовлетворительные результаты, в частности эффективность апертуры достигла 60%, а усиление превысило 13 дБи.

Из-за отсутствия специальной схемы формирования луча мы ожидаем благоприятное масштабирование омических потерь на более высоких частотах, как и в аналогичных антеннах с одним облучателем.Поэтому интересно сравнить измеренную в настоящее время апертурную эффективность (в среднем около 50%) с аналогичными антеннами на метаповерхностях. Результаты, представленные 28 для антенны с очень высоким коэффициентом усиления в диапазоне X (8,4 ГГц), показывают эффективность порядка 35%, что ниже, чем в нашем случае, как и ожидалось на более высокой частоте. Наша значительно более высокая эффективность предполагает благоприятную проекцию для более высоких частот и большего усиления.

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

M-19-19 Обновление Инициативы по оптимизации центра обработки данных (DCOI)

Скачать этот меморандум в формате PDF

М-19-19

25 июня 2019 г.

МЕМОРАНДУМ ДЛЯ ГЛАВНЫХ ДОЛЖНОСТНЫХ ПО ИНФОРМАЦИИ ИСПОЛНИТЕЛЬНЫХ ВЕДОМСТВ И АГЕНТСТВА

ОТ: Сюзетт Кент

Федеральный директор по информационным технологиям

Федеральный закон о реформе приобретения информационных технологий (FITARA) потребовал от федерального правительства консолидировать и оптимизировать дата-центров к 1 октября 2018 года.Управление управления и бюджета (OMB) ответила выпуском M-16-19, Инициатива по оптимизации центров обработки данных. (DCOI), , который устанавливает приоритеты закрытия и эффективности центров обработки данных. улучшения до конца 2018 финансового года. Расширение FITARA Закон 2017 года продлил требования FITARA к центрам обработки данных до 1 октября 2020 г. В результате OMB обновляет и расширяет данные Инициатива по оптимизации центра.

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

Фон

Федеральное правительство добилось больших успехов в консолидации и оптимизация федеральных центров обработки данных с 2010 года, когда Управление Управление и бюджет (OMB) запустили первый Федеральный центр обработки данных Инициатива консолидации (FDCCI). С тех пор агентства добились значительная экономия средств, улучшили свое понимание энергии технологии повышения эффективности и приступили к внедрению облачных и гибридные среды.

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

По мере того, как агентства добиваются большей прозрачности расходов на ИТ с помощью Capital Планирование и контроль инвестиций (CPIC) и технологический бизнес управления (TBM), полученные данные будут поддерживать и обеспечивать их способность рационализировать свои портфели приложений, чтобы найти более окупаемость инвестиций в соответствии с Федеральным рейтингом облачных вычислений 2018 г. Стратегия («Умное облако»). Вместо того, чтобы сосредоточиться на инфраструктуре в одиночку агентства должны учитывать, какие приложения работают в их центров обработки данных для облегчения дальнейшей консолидации и оптимизации. Этот будет часто требовать обновления устаревших приложений, чтобы воспользоваться преимуществами современных технологий, таких как API, микросервисы и облачные технологии, а также как замена заказных систем коммерческими предложениями, когда экономически эффективным. Агентства должны тщательно рассмотреть общую стоимость Право собственности (TCO) при принятии таких решений, а не только лицензирование и расходы на хостинг.

Власть

Требования настоящего Меморандума распространяются на 24 федеральных агентства подпадает под действие Закона о главных финансовых директорах (CFO) 1990 г., , включая министерство обороны. Глава каждого охватываемого учреждения, оказывавший помощь Директором по информационным технологиям (CIO) агентства требуется ежегодно представлять в OMB 1) комплексную инвентаризацию центров обработки данных принадлежит, управляется или поддерживается агентством или от его имени, и 2) многолетняя стратегия достижения консолидации и оптимизации эти центры обработки данных.Каждое агентство под руководством своего директора по информационным технологиям должно предоставлять ежеквартальные отчеты о своем прогрессе в завершении деятельности, показатели консолидации и оптимизации, а также экономия средств за счет реализации своей стратегии.

ОМБ требуется для установления сроков, требований, метрик для отчеты агентств, и должен рассматривать отчеты и прогресс агентств к консолидации и оптимизации.

Политика

Этот Меморандум учреждает новую Инициативу по оптимизации центров обработки данных. (DCOI), который заменяет предыдущий DCOI, сформулированный в Меморандуме OMB. M-16-19, Меморандум инициативы по оптимизации центров обработки данных (1 августа, 2016) (М-16-19).Вступает в силу немедленно, OMB отменяет Меморандум OMB М-16-19.

Приостановка разработки для новых и существующих центров обработки данных

Агентства не могут выделять какие-либо средства или ресурсы на инициирование нового ЦОД, принадлежащий агентству, или значительное расширение существующего ЦОД, принадлежащий агентству, без согласования с OMB. Для запроса такого утверждения, агентства должны представить письменное обоснование, которое включает анализ альтернатив, включая возможности облачных сервисов, общие услуги и совместное размещение третьих сторон.Это обоснование должно включить объяснение чистого сокращения в центре обработки данных агентства инвентарь, которому будет способствовать новый или расширенный центр обработки данных (например, путем объединения нескольких существующих центров обработки данных в единый новый дата-центр).

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

Объединение и закрытие существующих центров обработки данных

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

  • Переход на предоставляемые услуги, включая облачные технологии, максимально практично;

  • Миграция на межведомственные общие службы, внутриведомственные общие службы услуги или совмещенные центры обработки данных; и

  • Миграция в более оптимизированные центры обработки данных в рамках данных агентства центральный инвентарь.

Управляющий партнер по общим услугам

OMB по-прежнему считает общие сервисы краеугольным камнем центра обработки данных укрепление. Таким образом, Управление общего обслуживания (GSA) Общегосударственной политики (OGP) будет продолжать действовать как центр обработки данных Управляющий партнер по общим услугам, управляющий партнер Федерального Направление деятельности государственных центров обработки данных (LoB), а также Офис управления программой Center and Cloud Optimization Initiative (DCCOI PMO).В этой роли OGP продолжит служить доверенным агент, информационный брокер и эксперт в предметной области, чтобы помочь данным поставщики центров и потребители услуг центров обработки данных, предоставляя руководство по технологическим достижениям, инновациям, кибербезопасности, приобретения и лучшие практики. Однако OMB больше не будет ожидать GSA создать и поддерживать рынок общих услуг центра обработки данных.

OMB поручает DCCOI PMO по согласованию с Управлением общих Улучшение услуг и производительности (OSSPI) и технология Служба трансформации (TTS) со следующими действиями:

  • Координация с OMB для разработки ресурсов и руководств по данным центральное и облачное внедрение и оптимизация;

  • Координация с государственным менеджером по ИТ и другими ключевые компоненты GSA для создания и ведения инвентаризации инструменты приобретения, язык требований контракта и продукты специфичные для технологий и услуг, окружающих центр обработки данных оптимизация, в том числе закупки транспортных средств для приобретения средства автоматизированного управления инфраструктурой и мониторинга;

  • Разработка, внедрение и поддержание финансовых и сервисных модели закупок облачных сервисов и центров обработки данных с клиентские/партнерские агентства и поставщики общих услуг; и

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

Согласование с повесткой дня руководства президента

За последние два года Административно-бюджетное управление получил обширную обратную связь от агентств, когда они внедрили Data Инициатива по оптимизации центра, определяющая области, в которых агентства в состоянии добиться наибольших улучшений и экономии, а также те что не принесло положительной отдачи от инвестиций. В соответствии с директива администрации о переходе от малоценных к высокоценным работа, и снятие излишне обременительной отчетности, ОМБ пересматривает свою направленность с М-16-19 следующим образом.

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

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

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

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

Основные средства миссии для управления данными

В первоначальном Меморандуме М-16-19 ОМБ создало исключение для некоторых дата-центров от закрытия:

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

Однако на практике у агентств есть много типов критически важных или неотделимые системы и сервисы, не подпадающие под это определение. К ним относятся аппараты МРТ, метеостанции, авиадиспетчерская служба. системы диспетчерского управления и сбора данных (SCADA) и другие виды использования, где разделение сбора, хранения и обработки данных технически возможно, но увеличивает задержку сверх разумного предела.Агентства не могут консолидировать многие типы систем в удаленных местах. без ущерба для миссии агентства; они варьируются от файла посольства серверы в зарубежных странах, чтобы заблокировать шлюзы управления. Более того, многочисленные федеральные лаборатории и исследовательские центры имеют центры обработки данных, нельзя консолидировать без недопустимо негативного воздействия на спектакль; к ним относятся узлы обработки специального назначения (SPPN), узлы высокопроизводительных вычислений (HPC) и другие подобные системы. Наконец, многочисленные центры обработки данных будут по-прежнему необходимы для юридических или логистические причины.

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

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

Закрытие и экономия средств

Объем информации, собираемой и обрабатываемой Федеральным Правительство продолжает расти, особенно с ростом «Интернет вещей», мобильные вычисления с искусственным интеллектом (ИИ) и предоставление цифровых услуг. Это привело к увеличению объема вычислительных ресурсов агентства. необходимо соответствовать спросу. Хотя услуги, предоставляемые поставщиком, такие как облачные технологии являются потенциальными решениями, они не всегда более экономичные альтернативы услугам, предоставляемым агентством.В результате работа, проделанная за прошедшие годы, будет продолжена улучшения, но федеральному правительству не следует ожидать постоянная значительная экономия или крупномасштабное закрытие текущих данных сосредоточить усилия по консолидации и оптимизации по мере роста потребностей агентства.

Агентства должны рассмотреть возможности для инвестиций, которые могут принести долгосрочная экономия за счет энергоэффективности. Например, освежить неэффективное оборудование может привести к долгосрочной экономии, особенно там, где устаревшие системы, срок службы которых истек, требуют больших затрат на поддержку.Агентствам также следует рассмотреть возможность использования серверов с регистрацией EPEAT, когда модернизация или замена оборудования для повышения энергоэффективности. Стандарт, используемый EPEAT, требует, чтобы зарегистрированные серверы соответствовали стандарту ENERGY STAR. сертифицированы и поддерживают Американское общество отопления, охлаждения и Инженеры по кондиционированию воздуха (ASHRAE) Допустимый класс A2 или выше экологический рабочий диапазон и дополнительно стимулирует эффективность уровни выше ENERGY STAR для источников питания и активной/неактивной мощности состояния. Агентствам также рекомендуется использовать перфоманс-контракты. включая договоры об энергосбережении и коммунальные услуги Контракты на обслуживание для финансирования улучшений энергопотребления, когда экономически эффективным.

OMB будет продолжать работать с агентствами, чтобы ставить цели для конкретных агентств. закрытие центров обработки данных и экономия средств, соответствующие миссии и бюджета каждого агентства. OMB обновит эти цели с те, которые установлены для M-16-19, соответствуют текущему статусу и прогрессу агентств.

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

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

Любой запуск центра обработки данных, значительное расширение или проект миграции получившие средства на разработку, модернизацию и усовершенствование (DM&E) в 2017 финансовом году или позже должны внедрить автоматизированный мониторинг и инструменты управления. Однако агентствам настоятельно рекомендуется автоматизированные средства мониторинга и управления в своих центрах обработки данных особенно те, которые превышают 100 кВт.

В той мере, в какой это разрешено Положением о федеральных закупках (FAR), агентства должны включать стандартную автоматизированную инфраструктуру требования к управлению для всех новых контрактов на обслуживание центров обработки данных или закупочные автомобили. Кроме того, любой новый подрядчик центра обработки данных механизм закупок должен требовать от подрядчика отчитываться перед подрядным агентством, использует ли контрактный объект автоматизированный управление инфраструктурой, за исключением случаев, когда такие данные уже представлены непосредственно в OMB или GSA через участие в межведомственной службе программа.Чтобы обеспечить согласованность требований между агентствами, ИТ-директор Совета при поддержке руководителя категории ИТ GSA и других соответствующие заинтересованные стороны, разработают стандартную формулировку по мере необходимости.

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

Ранее OMB рассчитывал показатели производительности, указанные в M-16-19. как средние значения по всему реестру применимых данных агентства центры. Эти расчеты привели к отсутствию ясности в отношении конкретные успехи и неудачи в инвентаре агентства, а также несколько низкопроизводительные центры обработки данных резко повлияют на средний эффективность всего агентства.Это приведет к дата-центрам запланировано на закрытие, что было бы нерентабельно для оптимизация – отрицательно влияет на общий средний показатель. Несколько из метрики было почти невозможно для агентств, и единственный Критерий успеха заключался в том, соответствует ли среднее значение заданному показателю или нет. цель. В результате эти средние значения не обеспечивают прозрачности того, как эффективно или эффективно агентство управляет центрами обработки данных, или агентство совершенствуется с течением времени.

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

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

Обновленная метрика: виртуализация

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

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

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

Обновленная метрика: расширенный учет энергии

Передовые инструменты измерения и управления, такие как системы DCIM, важно отслеживать производительность в процессе непрерывного улучшения. Такие инструменты, как системы DCIM, используются для выявления конкретных возможностей и лучшие практики, выявлять неиспользуемые мощности и оптимизировать операционную параметры, такие как условия окружающей среды, включая температуру и влажность. Кроме того, передовые системы мониторинга способствуют повышенная надежность и отказоустойчивость центров обработки данных за счет раннего предупреждение о возможных проблемах (т.г., горячие точки и проблемы с система распределения электроэнергии, система охлаждения и холодильная установка), неисправность обнаружения и сигнализации, диагностического обслуживания, а также энергии и возможности экономии и оптимизации спроса (например, планирование нагрузки и ограничение мощности). Установка передовых счетчиков энергии в центрах обработки данных, а также описанный в M-16-19, требовался Исполнительным указом 13693: Планирование для федеральной устойчивости в следующем десятилетии, но с тех пор этот порядок был отменен Исполнительным указом 13834: Эффективное федеральное Операции.

Хотя автоматизированный мониторинг выгоден агентствам для получения лучшее понимание энергопотребления и оптимизация, это также может быть непомерно дорого для агентств покупать и устанавливать эти инструменты. На многих объектах уже есть приборы учета электроэнергии и другие измерительные устройства, не относящиеся к области центра обработки данных объекта, а также с ограниченным количеством подсчетов опытным управляющий объектами сможет точно оценить потребление энергии. Более того, агентствам бесполезно устанавливать эти инструменты в объект, который они планируют закрыть.Таким образом, агентства будут ожидается наличие продвинутого учета энергии и подсчета, достаточного для точной оценки эффективности использования энергии (PUE) для всех оставшиеся центры обработки данных мощностью более 100 кВт, которые они планируют оставить открытыми.

OMB продолжит отслеживать внедрение агентствами передовой энергии учета путем измерения количества объектов с большей частью пространство с этим измерением, а не с использованием комбинированной метрики метража и общей площади согласно требованиям М-16-19.Более того, агентства смогут запросить освобождение для отдельных объектов где слишком дорого установить этот мониторинг, или если они планируется закрытие объекта.

Удален показатель: Энергоэффективность

М-16-19 требует от агентств сообщать об энергоэффективности данных центров, использующих ПУЭ, доля энергии, используемой ИТ-оборудованием по сравнению с общей энергией, используемой центром обработки данных. Этот меморандум установить целевое значение PUE 1,5 для существующих центров обработки данных и 1.4 для новые центры обработки данных, как определено в Исполнительном указе 13693, которые, как упомянутое ранее, было отменено Исполнительным указом 13834.

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

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

Обновленная метрика: использование сервера

FITARA устанавливает требование к OMB для отслеживания центра обработки данных «эффективность, включая, как минимум, эффективность сервера». Тем не менее, концепция эффективности сервера часто неправильно понимается. В виде еще в 2009 году OMB сообщило, что федеральные серверы в целом имели очень низкий уровень коэффициенты использования серверов – однако это отсутствовало более сложный анализ ожидаемого использования и без надлежащего принятия с учетом часов работы, резервных копий, резервных систем для непредвиденная загрузка и аварийное переключение, а также другие практики, распространенные как в Федеральный и коммерческий сектора.Также важно отметить, что частота обновления оборудования является одним из ключевых компонентов серверной эффективности, но вопреки здравому смыслу более новое оборудование обычно будет отражать более низкое использование из-за повышения эффективности вычислительной мощности, хранения, и другие показатели производительности в зависимости от нагрузки на сервер поддерживает.

«Эффективность сервера» — относительный термин, зависящий от характера оборудование и приложения, работающие на сервере (т. е. системы, которые могут иметь высокую загрузку только в часы пик).Миссия агентства также может определить, работает ли сервер. эффективно или нет – наличие большого количества резервных систем может быть неэффективны для одного агентства, но необходимы для другого, чтобы иметь возможность реагировать на критические чрезвычайные ситуации и инциденты безопасности. Серверы могут становятся чрезмерно используемыми без надлежащего мониторинга или резервирования, что приводит к неожиданный сбой и потеря данных. Сервер, работающий на цели использование, как описано в M-16-19 в соответствии с традиционной практикой, скорее всего, это индикатор системы, которая может выйти из строя из-за чрезмерное использование, а не тот, который хорошо оптимизирован.

Более высокая степень использования лучше всего достигается за счет гибкого управления системой методы, обычно называемые DevOps или DevSecOps, которые включают контейнеризация (как указано выше в разделе «Виртуализация»), а также динамическое и быстрое назначение ресурсов на основе измеренного использования и прогнозируемая потребность. Эти же методы также обеспечивают более высокую отдачу от инвестиции во внедрение облачных технологий. Однако, поскольку эти методы в значительной степени являются функцией управления приложениями, а не данными. управления центром, они могут не входить в компетенцию центра обработки данных бригады объектов.Таким образом, скоординированные усилия программного обеспечения агентства инженеры, оборудование и команды безопасности потребуются для улучшения зрелость практик, как описано в стратегии Cloud Smart .

Федеральное правительство должно выявлять и сокращать недоиспользуемые серверы. Метрика, определенная для использования сервера в M-16-19, устанавливает исходный уровень для использования в качестве расчетного среднего, что не помогло в поиск и удаление недогруженных серверов. Более того, это было измерено как комбинированная метрика с «автоматическим мониторингом», что делает цель более Агентствам трудно достичь.

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

Из-за особенностей миссии, оборудования и приложений требования, которые могут повлиять на эффективность операций, OMB не будет установить конкретную методологию для определения использования сервера оценка для каждого учреждения. Тем не менее, OMB ожидает, что агентства рассмотрят Использование процессора и дискового пространства на минимуме. Агентства должны оценить свои портфолио регулярно в рамках рационализации приложений, изложенной в стратегии Cloud Smart для определения приложений, требующих большое количество ресурсов сезонно или нечасто, что может быть идеальным кандидаты на закрытие или переход на облачные технологии

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

Удаленная метрика: Использование объекта

В процессе консолидации центров обработки данных OMB ожидает, что агентства найти возможности для переноса существующего серверного инвентаря на другие объекты, что приводит к большей плотности на объекте назначения.Тем не менее, OMB определил через информацию агентства, что на практике Facility Использование в качестве показателя может противоречить другим, более важным приоритеты. Например, увеличение использования оборудования может отрицательно сказаться на влияют на энергоэффективность; Между тем, улучшенная виртуализация в целом снижает использование оборудования, поскольку агентства консолидируют свои системы.

Кроме того, метод расчета использования, изложенный в М-16-19, использует идеализированное среднее значение использования площади серверных стоек без принимая во внимание такие элементы, как мейнфреймы, вертикальные конструкции не требующие фальшполов или планирующие расширение в будущем.Так как Использование объекта в значительной степени избыточно с учетом прогресса к общим усилиям по консолидации, OMB больше не будет отслеживать деятельности агентств в этой области.

Новая метрика: доступность

В коммерческих помещениях наиболее важный элемент инфраструктуры провайдер. наличие объекта. Большинство соглашений об уровне обслуживания содержат явное обсуждение гарантий доступности услуг. Минимум, Федеральное правительство должно быть готово предоставить сопоставимые уровень обслуживания, предоставляемый центрами обработки данных частного сектора и облачные сервисы.

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

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

Разъяснение по приоритизации проблем

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

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

  1. Консолидация и закрытие

  2. Оптимизация

я. Виртуализация II. Доступность III. Учет энергии IV. Использование сервера

Отчетность

OMB будет собирать данные от агентства к агентству через Интегрированный сбор данных (IDC), как указано ниже:

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

  2. Агентства должны ежегодно оценивать затраты на эксплуатацию и поддерживать текущие объекты и разрабатывать ежегодные цели для экономия средств и избежание издержек за счет консолидации и оптимизация через закат этой политики. Агентства должны сообщать обо всех достигнутых сокращениях затрат и избежания затрат в соответствии с DCOI как часть их стратегического плана DCOI (см. ниже).

  3. Агентства должны ежеквартально отчитываться о ходе выполнения своих замыкания и метрические целевые значения. Агентства могут представить это информация как отдельный описательный документ.

Агентства, участвующие в качестве арендатора в межведомственном совместном обслуживании ЦОД провайдера не обязаны сообщать значения метрик в OMB. Провайдер сообщит эти данные в OMB.

Стратегический план DCOI

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

Стратегические планы DCOI агентств должны включать, как минимум, далее:

  1. Запланированные и достигнутые уровни производительности для каждой оптимизации метрика по годам;

  2. Запланированные и реализованные закрытия по годам;

  3. Объяснение любых метрик оптимизации и замыканий, для которых агентство не достигло запланированного уровня в предыдущем Стратегическом План;

  4. Годовые расчеты целевых и фактических расходов агентства и экономия на центрах обработки данных за счет прекращения действия этой политики, в том числе:

    а.Описание любых первоначальных затрат на консолидацию центра обработки данных. и оптимизация; и

    б. Снижение стоимости жизненного цикла и другие улучшения (в том числе после истечения срока действия этой политики, если применимо).

  5. Исторические затраты, экономия затрат и избежание затрат благодаря данным консолидация и оптимизация центра; и

  6. Заявление директора по информационным технологиям агентства о том, имеет ли агентство выполнил все требования к отчетности в этом меморандуме и требования центра обработки данных FITARA.Если агентство не выполнило со всеми требованиями к отчетности, агентство должно предоставить заявление с описанием причин несоблюдения.

Агентства обязаны публиковать свои стратегические планы на [agency].gov/digitalstrategy в разделе «ЦОД Стратегические планы инициативы по оптимизации». Агентства также должны вносить свои стратегические планы доступны в машиночитаемом формате. ОМБ предоставит инструкции агентствам, включая схему, 30 дней с момента выдачи этот меморандум.

Агентства должны обновлять файлы цифровых вех агентства, также размещенные на их веб-сайты, чтобы определить как минимум пять вех в течение финансового года быть достигнуто через DCOI. Агентства должны обновить свой DCOI этапы ежеквартально по мере их продвижения. OMB рассмотрит эти вехи с агентствами на ежеквартальных сессиях PortfolioStat .

Дата вступления в силу и закат

Этот Меморандум вступает в силу немедленно и автоматически прекращает свое действие. 30 сентября 2020 г.

Угловая оптимизация: используйте опцию trackBy для директивы *ngFor | by Chidume Nnamdi 🔥💻🎵🎮

Узнайте, как правильно использовать директиву *ngFor для оптимизации производительности приложения Angular

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

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

Bit’s Visual Collection

Эта директива используется для рендеринга массива итерируемых объектов (или просто массивов). Это то же самое, что и ng-repeat в AngularJS.

 


  • Имя: {{user.name}}
    Адрес: {{user.address}}
    Номер телефона: {{user.phone}}

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

*ngFor — это структурная директива. Он используется для создания и управления DOM путем добавления и удаления элементов DOM.

 @component({ 
template: `


  • Имя: {{user.name}}
    Адрес: {{user.address}}
    Номер телефона : {{user.phone}}


`
})
class NgForEx {
пользователей: Array = [
{
имя: "Камни",
адрес: "Няня , Абуджа",
телефон: 08163393726
},
{
имя: "Marvel",
адрес: "Kree Planet",
телефон: 081234638745
}
]
}interface Пользователь {
имя: строка;
адрес: строка;
телефон: номер;
}

Результат будет выглядеть следующим образом:

 


  • Имя: Stones
    Адрес: Nyanya, Abuja
    Номер телефона: 08163393726


  • Имя: Marvel
    Адрес : Kree Planet
    Номер телефона: 081234638745

У нас есть пользователь с именем, адресом и телефоном.Мы инициализируем свойство массива пользователей в классе NgForEx. Мы использовали директиву ngFor для перебора массива пользователей и заполнения каждого DOM выражениями шаблона: {{user.name}} , {{user.address}} и {{user.phone}} .

Мы можем расширить приложение, чтобы добавить больше пользователей в массив пользователей.

 @component({ 
template: `









  • Имя: {{user.имя}}
    Адрес: {{user.address}}
    Номер телефона: {{user.phone}}



`
})
класс NgForEx {
имя :string=""
address: string
phone: number
users: Array = [
{
name: "Stones",
address: "Nyanya, Abuja",
phone: 08163393726
}.
{
имя: "Marvel",
адрес: "Kree Planet",
телефон: 081234638745
}
]
addUser() {
this.users = this.users.concat([{
name: this.name,
age: this.age,
phone: this.phone
}])
this.clearDetails()
}
clearDetails() {
this.name = ""
this.age = null
this.phone = null
}
}

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

Рендеринг массива в ngFor вызывает чрезмерные манипуляции с DOM.

Приведенный выше пример слишком прост, чтобы показать какое-либо замедление работы приложения. Представьте, что вы перебираете более 10 000 объектов в массиве.

 @component({ 
template: `









  • Имя: {{user.имя}}
    Адрес: {{user.address}}
    Номер телефона: {{user.phone}}



`
})
класс NgForEx {
имя :string=""
age: number
phone: number
users: Array = [
{
id: 0,
name: "Stones",
address: "Nyanya, Abuja",
phone: 08163393726
}.
{
id: 1,
name: "Marvel",
адрес: "Kree Planet",
phone: 081234638745
}
]
id: number = 1
конструктор() {
for(var i = 0; i < 100000; i++) {
это.users.push({
id: this.id++,
name: "Unknown",
address: "Abuja",
phone: 0384793 + this.id++
})
}
}
addUser() {
this.users = this.users.concat([{
id: this.id++,
name: this.name,
age: this.age,
phone: this.phone
}])
this.clearDetails()
}
}

Здесь мы заполняем массив пользователей 100000 пользователей. Когда мы нажимаем кнопку Add User , чтобы добавить пользователя, директива ngFor уничтожит файл

  • ...
  • 90 158 DOM, выполните итерацию по массиву пользователей и сгенерируйте новую коллекцию выходных элементов разметки 90 157
  • ...
  • 90 158 с массивом пользователей, который необходимо отобразить.

    Не понял? Не беспокойтесь, давайте объясним с визуальными эффектами.

    Допустим, у нас есть это:

     пользователей = [ 
    {
    имя: nnamdi
    },
    {
    имя: chidume
    }]


    • nnamdi
    • 900 chidume

    Теперь, когда мы добавляем нового пользователя в массив пользователей, например

     { 
    "name": "philip"
    }

    Весь DOM

     


    • nnamdi


    • chidume

    будет уничтожено

     

    и будет создан новый DOM из массива пользователей:

     пользователей = [ 
    {
    имя: "nnamdi"
    },
    {
    имя: "chidume"
    },
    {
    имя: "philip"
    }]


    • ннамди


    • чидуме


    • Филипп

    С какой проблемой мы столкнемся здесь?

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

    Виновником этой неэффективной манипуляции с DOM является не директива *ngFor , а наше понимание и использование концепции изменчивости в Angular.

    Angular использует оператор проверки на равенство === , чтобы определить, когда изменяются входные данные для директив. Когда он видит изменение, он запускает повторный рендеринг или CD для директивы.

    Примечание : Компоненты являются директивами, но они являются директивами с представлением.

    Оператор === проверяет наличие изменений ссылок в проверяемых им объектах. Что такое изменение ссылок? Ссылка в сложной структуре данных в JS — это адрес памяти, где объект хранится в куче.

     const a = [1, 2, 3, 4, 5] // хранится в #0x0987654321 
    const b = [1, 2, 3, 4, 5] // хранится в #0x0987654326

    Массивы являются примером сложная структура данных.Массив a хранится по адресу 0x0987654321 , а массив b хранится по адресу 0x0987654326 . Оценка одинаковости двух массивов с использованием === вернет false, поскольку они указывают на разные адреса памяти.

     log(a === b) // false 

    Хотя они содержат одинаковые значения, он вернул false, потому что не сравнивает их значения, а только сравнивает их адреса памяти.

    Если мы сделаем так, чтобы b указывала на a, описанная выше проверка на равенство зарегистрируется как истинная 4, 5] // хранится по адресу #0x0987654326b = a // Теперь b хранится по адресу #0x0987654321log(b === a) // true

    Использование оператора = в сложной структуре данных просто меняет указатель адреса на значение адреса памяти LHS.Выполнение b = a просто заставляет b указывать на адрес памяти a #0x0987654321 . Журнал возвращает true, потому что === проверяет адрес памяти LHS и структуру данных RHS.

    Что такое мутация? Это изменение структуры/информации набора данных. У нас есть a вот так:

     const a = [1, 2, 3, 4, 5] // хранится по адресу #0x0987654321 

    Если мы добавим к нему данные, его структура изменится.

     a = [1, 2, 3, 4, 5, 6] // хранится в #0x0987654321// ORa = [1, 2, 3, 4, 5, "nnamdi"] // хранится в #0x0987654321 

    Теперь мы бы сказали, что и мутировали.

    Поскольку Angular использует === для проверки изменений в структурах данных. Поэтому нам рекомендуется использовать неизменяющие методы при манипулировании нашими входными привязками, потому что, если мы используем изменяющие методы, Angular не получит никаких изменений для запуска CD, хотя внутренние значения изменились.

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

    Теперь, *ngFor использует Differs, чтобы знать, когда следует перебирать коллекцию, чтобы знать, какие элементы в коллекции отображать.Отличия имеют методы, сообщающие нам о том, что элементы:

    • добавлены
    • удалены
    • изменены позиции

    Упрощение ngДля исходного кода это будет выглядеть так:

     @Directive({ 
    selector: '[ngForOf]'
    })
    class ngForOf реализует OnChanges, DoCheck {
    отличаются: любые
    элементов: любые
    набор ngForOf(items) {
    this.items = items
    this.differ = this.differs.find(items) .create()
    } ngDoCheck() {
    константные изменения = это.Different.diff(this.its)
    if(changes) {
    changes.forEachAddedItem((change) => {
    this.viewContainer.createEmbeddView(...)
    })
    }
    }
    }

    В ngDoCheck мы используем метод diff для обнаружения изменений в списке элементов . Если есть изменения, мы перебираем добавленные элементы и создаем представления из добавленных элементов.

    Как Differs обнаруживает изменения в списке массивов? Они используют одну и ту же проверку на равенство === .Итак, если у нас есть такой массив:

     пусть массив = [
    {
    id: 0
    },
    {
    id: 1
    },
    {
    id: 2
    }
    ]
    8
    7 Отличия 1
    2 ссылки списков и позиции:

     let array = [ 
    {
    id: 0
    }, // @ # 0x000001
    {
    id: 1
    }, // @ # 0x000002
    {
    id: 2
    } // @ #0x000003
    ]

    Когда запись добавляется в список, array.push({id:3}) :

     let array = [ 
    {
    id: 0
    }, // @ #0x000001
    {
    id: 1
    }, // @ #0x000002
    {
    id: 2
    }, // @ #0x000003
    {
    id: 3
    } // @ # 0x0
  • 5
  • записей] :

     { 
    id: 3
    } // @ #0x000004

    в качестве добавленного элемента.

    Итак, когда мы вызываем changes.forEachAddedItem(()=> void) , вышеприведенный элемент

     { 
    id: 3
    } // @ #0x000004

    будет возвращен

    Теперь, если мы выполним операцию который изменяет список массивов и возвращает новый набор списков.

     let array = [ 
    {
    id: 0
    }, // @ # 0x000001
    {
    id: 1
    }, // @ # 0x000002
    {
    id: 2
    }, // @ # 03x900] array = array.concat([
    {
    id: 3
    }
    ])

    массив будет

     array = [
    {
    id: 0
    }, // @ #0x000011
    {
    0 } , // @ #0x000012
    {
    id: 2
    }, // @ #0x000013
    {
    id: 3
    } // @ #0x000014
    ]
  • Вы видите, что возвращаются новые ссылки. Отличается будет сравнивать предыдущую. массив с новым массивом и увидеть изменения ссылки. Затем указанный выше массив будет возвращен как добавленные элементы.

    Итак, вы видите проблему? Из-за мутации и запуска Angular CD мы всегда возвращаем новую ссылку в наших компонентах, поэтому Differs возвращают новые изменения во входных элементах ngFor. В этом процессе ngFor будет продолжать отображать неизмененные элементы по мере их добавления, поскольку ссылка изменилась.

    Как решить эту проблему?

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

    Например, у нас есть массив:

     array = [
    {
    id: 0,
    name: "david"
    }, // @ #0x0001
    {
    id: 1,
    name: "philip"
    }/ / @ #0x0002
    ]trackBy: (item) => item.id

    Differs запишет этот набор по своему id s. Когда мы добавляем другой либо возвращая новый массив, либо обновляя текущий массив.

     array = array.concat([ 
    {
    id: 2,
    name: "nnamdi"
    }
    ])array = [
    {
    id: 0,
    name: "david"
    }, // @ # 0x0011
    {
    id: 1,
    name: "philip"
    }, // @ #0x0012
    {
    id: 2,
    name: "nnamdi"
    } // @ #0x0013
    ]trackBy: (item) = > item.id

    Просмотреть новые ссылки в массиве, но Differs не будет их использовать, он будет использовать функцию trackBy: (item) => item.id и определять изменения по идентификатору элементов.Итак, теперь Differs будет читать следующие изменения:

     { 
    id: 2,
    name: "nnamdi"
    } // @ #0x0013

    🙂 Вы видите, что он вернул выше, потому что идентификатор не входит в число пред. записанный список.

    То же самое происходит при обновлении массива без изменения ссылки.

     array = [ 
    {
    id: 0,
    name: "david"
    }, // @ # 0x0001
    {
    id: 1,
    name: "philip"
    } // @ # 0x0002
    ]trackBy: (элемент) => элемент.idarray.push({
    id: 2,
    name: "nnamdi"
    })array = [
    {
    id: 0,
    name: "david"
    }, // @ #0x0001
    {
    id: 1,
    name : "philip"
    }, // @ #0x0002
    {
    id: 2,
    name: "nnamdi"
    } // @ #0x0003
    ]

    Идентификатор с 2 будет возвращен:

    69 id: 2,
    name: "nnamdi"
    } // @ #0x0003

    Теперь давайте перепишем наш пример NgForEx , чтобы использовать trackBy option:

     @component({ 
    template: `
    >








    • Имя: {{user.имя}}
      Адрес: {{user.address}}
      Номер телефона: {{user.phone}}



    `
    })
    класс NgForEx {
    имя :string=""
    age: number
    phone: number
    users: Array = [
    {
    id: 0,
    name: "Stones",
    address: "Nyanya, Abuja",
    phone: 08163393726
    }.
    {
    id: 1,
    name: "Marvel",
    адрес: "Kree Planet",
    phone: 081234638745
    }
    ]
    id: number = 1
    конструктор() {
    for(var i = 0; i < 100000; i++) {
    это.users.push({
    id: this.id++,
    name: "Unknown",
    address: "Abuja",
    phone: 0384793 + this.id++
    })
    }
    }
    addUser() {
    this.users = this.users.concat([{
    id: this.id++,
    name: this.name,
    age: this.age,
    phone: this.phone
    }])
    this.clearDetails()
    } trackById( index: number, item: User) {
    return item.id
    }
    }

    Теперь Angular будет использовать значение, возвращаемое функцией trackById, для отслеживания идентичности элементов.

    Leave a Reply