Оптимизация згип: Как увеличить FPS в PUBG. Способ с изменением реестра Windows — PUBG TOP #1

Содержание

Как оптимизировать PUBG

Оптимизация любой игры позволяет взять от игрового процесса всё. Этой возможностью не обделена и недавно выпущенная игра PlayerUnknown’s Battlegrounds. Конечно, для каждого компьютерного чуда присущи индивидуальные настройки, и процесс оптимизации одной игры не поможет выжать максимум удовольствия из другой. Поэтому к такому эксперименту как оптимизация PUBG следует подойти с особой тщательностью, если на выходе пользователь хочет значительно увеличить комфортность игрового процесса.

Настройки графики в PUBG

1. Масштаба экрана наиболее важный пункт оптимизации, который требует много ресурсов. Параметр выставляем на 90 единиц.
2. Сглаживание лучше поставить на «средний» уровень – таким образом, пользователь сможет разглядеть противника даже на низких настройках.
3. Постобработка для PUBG не очень важна, поэтому её можно поставить на «очень низкий» уровень.
4. Тени – ставим «очень низкий».
5. «Низкий» уровень следует присвоить текстурам.
6. Эффекты лучше всего поставить на «низкий» уровень.
7. Листву тоже на «низкий» – это даст пользователю фору в виде заметности противника в зарослях.
8. Дальности видимости. Для любителей снайперского оружия подойдёт средний уровень – конкурент также будет хорошо виден, и при этом игровой процесс не покажется системе неподъёмной ношей.
9. Лишение пункта «Отображение персонажа на экране инвентаря» галочки добавит 10 дополнительных фпс в PUBG.

CPU-Control

Как повысить FPS в PUBG ещё больше? С помощью программы CPU-Control! После нажатия на TslGame.exe нужно выставить параметр «All CPUs» и затем выбрать 4 CPUs. Бонусные 15 очков FPS у нас в кармане.

Как узнать FPS в PUBG

Краткая справка: чтобы определить текущий уровень FPS в PlayerUnknown’s Battlegrounds, следует проделать путь: Steam -> Настройки -> В игре -> Отображение частоты кадров. Кстати, он также подходит для всех игр, поддерживающих Stram-overlay.

Параметры запуска PUBG

Но теперь вернёмся к техническим возможностям того, как оптимизировать PUBG под слабый пк. Нужно понимать, что нижеупомянутые параметры с течением времени по тем или иным причинам могут оказаться закрыты разработчиками. Кроме того, их справедливость бесспорна для игр, созданных на основе движков Unreal Engine, Source и некоторых других.

Начать стоит с того же Steam. Следует проделать путь: Библиотека Steam -> «Свойства игры» -> «Установить параметры запуска». Когда откроется окно, пользователь может вставить в него команду:

-USEALLAVAILABLECORES -malloc=system -d3d10 -high -nomansky -lowmemory –FULLSCREEN

Этот механизм рекомендуется проделать на «слабых» пользовательских компьютерах.
Более подробно о параметрах запуска можно почитать тут: параметры запуска PUBG.

Масштабирование изображения

Данный метод оптимизации помогает не всем, но может поднять фпс в PUBG на 15-20 кадров.

  • Открываем папку с игрой ( C:\Program Files (x86)\Steam\steamapps\common\PUBG\TslGame\Binaries\Win64 )
  • Находим «TslGame» — кликаем правой кнопкой мыши — Свойства
  • Идем во вкладку «Совместимость» — ставим галочку на «Отключить масштабирование изображения при высоком разрешении экрана» и жмем «OK».

Настройки NVIDIA для PUBG

Здесь можно выделить два варианта оптимизации PlayerUnknown’s Battlegrounds: «лёгкий» и «глубокий». Начнём с первого – он разрешает драйверам в автоматическом режиме регулировать производительность PUBG, а также оптимизировать игровой процесс.

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

Панель управления NVIDIA -> «Параметры 3D» -> «Регулировка настроек изображения с просмотром». Здесь следует отметить «Пользовательские настройки с упором на…» и поставить этот упор на пункт «Производительность». Последующая перезагрузка компьютера, возможно, приведёт к желаемому результату.

Если этого системе показалось недостаточно, пора испытать «глубокий вариант» оптимизации PUBG, когда геймер вручную регулирует те или иные эффекты. Путь совпадает с «лёгким» вариантом вплоть до пункта «Регулировка настроек изображения с просмотром». Выбираем «Расширенные настройки 3D-изображений» – они отвечают за эффекты во время игрового процесса.

Перейдя в «Управление параметрами 3D», пользователь должен активировать «Глобальные параметры» и выставить пункты согласно приложенному скриншоту.

Последний пункт оптимизации — переход на вкладку «Программные настройки» -> «Добавить» и выбрать игру PlayerUnknown’s Battlegrounds (это также можно сделать через «Обзор» -> выбор файла PUBG). Далее следует приведение всех параметров к виду, указанному в таблице:

Функция:Значение:
Анизатропная фильтрацияУправление от приложения
Вертикальный синхроимпульсИспользовать глобальный параметр
Заранее подготовленные кадры виртуальной реальности nvidiaИспользовать глобальный параметр
Затенение фонового освещенияНе поддерживается для этого приложения
Кеширование шейдеровИспользовать глобальный параметр
Максимальное количество заранее подготовленных кадровИспользовать настройку 3D-приложения
Многокадровое сглаживание (MFAA)Выкл.
Оптимизировать для вычисленийИспользовать глобальный параметр (Выкл.)
Потоковая оптимизацияИспользовать глобальный параметр (Активно)
Режим управления электропитаниемПредпочтителен режим максимальной производительности
Сглаживание — FXAAВыкл.
Сглаживание — гамма-коррекцияВкл.
Сглаживание — параметрыИспользовать глобальный параметр
Сглаживание — прозрачностьВкл.
Сглаживание — режимУправление от приложения
Тройная буферизацияИспользовать глобальны параметр (Выкл.)
Фильтрация текстур — анизотропная оптимизацияВыкл.
Фильтрация текстур — качествоВысокое качество
Фильтрация текстур — отрицательное отклонениеРазрешить
Фильтрация текстур — трилинейная оптимизацияВкл

Теперь остаётся только перезагрузить ПК и запустить игру.

‎App Store: NEW STATE Mobile

Описание

Играйте в бинго «Космическая луна» и получайте особые награды!
Крупное изменение баланса! Узнайте, что изменилось на поле боя!

Представляем NEW STATE MOBILE — новую королевскую битву, разработанную PUBG STUDIOS, компанией, создавшей PLAYERUNKNOWN’S BATTLEGROUNDS (PUBG).
Отправляйтесь на огромное поле боя, ищите стратегически размещенное вооружение, транспорт и расходники и боритесь за жизнь.
Испытайте захватывающий геймплей, сражаясь за то, чтобы стать единственным выжившим!

▣ Особенности игры ▣
▶ Акинта: 15 минут настоящей королевской битвы
— Стремительные матчи королевской битвы на карте 4 на 4.
— Захватывающая игра с первых секунд.
— Особенности местности, позволяющие обыграть противника и задействовать стратегическое мышление.

▶ 7 раундов ожесточенного выживания а Круговом бое насмерть
— Круговой бой насмерть — серия сражений 4 на 4, где надо победить минимум в четырех боях из семи
— Игровая зона начинает уменьшаться в момент начала матча
— Уничтожьте соперников и одержите победу, став последним выжившим!

▶Реалистичные динамичные бои
— Игра полностью оптимизирована для мобильных устройств. Узнайте, что такое знаменитые бои PUBG
Меняйте оружие под себя с помощью системы дополнительных модулей

▶ Геймплей нового поколения
— Уникальная механика, появившаяся в NEW STATE MOBILE, добавляет в игру увороты, вызов дрона и запросы поддержки
— Новые транспортные средства, доступные только в NEW STATE MOBILE, помогают быстро перемещаться по открытому миру
— Захватывающий процесс достижения целей, которые могут переломить ход боя

▶ Расширение оригинальной вселенной PUBG
— Через несколько десятилетий после событий оригинального PUBG, в 2051 году, везде царит анархия и возникают новые фракции
— В NEW STATE MOBILE уникальный геймплей выживания PUBG приобретает новую глубину

▶ Сверхреалистичная графика, невероятная по меркам мобильных устройств
— Благодаря технологии «глобального освещения» NEW STATE MOBILE превосходит все, что раньше считалось возможным для мобильных игр
— Огромный открытый мир, уровень реализма которого доступен только PUBG STUDIOS
— NEW STATE MOBILE — это новое поколение графики PUBG
— Мир PUBG у вас на ладони
— Metal (API) обеспечивает стабильную работу с улучшенной производительностью и оптимизацией

▶ NEW STATE MOBILE — это рассвет новой эры PUBG.
— Настоящая королевская битва от игроков PUBG для игроков PUBG: вот что такое NEW STATE MOBILE
— NEW STATE MOBILE открывает новую эру PUBG на мобильных устройствах

▣ Ссылки на официальные ресурсы ▣
Сайт: newstate.pubg.com
YouTube: youtube.com/newstatemobilerussia
Facebook: facebook.com/OfficialNEWSTATEMOBILE
Twitter: twitter.com/NEWSTATEMOBILE
Instagram: instagram.com/newstatemobile_ru
VK: vk.com/newstatemobile

Версия 0.9.44

— Изменение баланса
— Новая карта командного боя насмерть: АРЕНА
— Обновление Троя: теперь доступны мультидропы
— Начинается 7-й сезон королевской битвы
— Билет выжившего, глава 15

Оценки и отзывы

Оценок: 11,2 тыс.

👌

Купил рп,на след день бан 50 лет 😃👍👍

ПК пабг в моём кармане

Чуваки которые пишут за лаги и сырой выпуск игры пока что не поняли, что нельзя просто так взять и довести до идеала игру, способную затмить остальные проекты в стиле королевской битвы на мобилки. Убийца мобайла? Определённо. Мобайл умер год назад и сейчас выпускает последние испрожнения для поддержания актива. Мобайлу 3 года, какой смысл сравнивать его с нью стейт на выходе? Вы не помните каким был Мобайл на старте? В катках по 90 ботов, сервера так же лагали, оптимизация была получше, но и то из-за бедноты механик. Да что уж там говорить, даже сейчас стёкла не завезли.
А что тогда с нью стейтом? Почему же он лучше?
Отвечаю:
Физика более проработана и тебе не кажется, что ты играешь в какую-то безделушку.
Костюмы не выглядят, будто ты в Бразилии на празднике, а выполнены в более привлекательном и не вырвиглазном стиле имхо (ну время покажет, может они пойдут по стопам брата по цеху)
Эта игра даёт тебе сразу два вторых шанса на то, чтобы исправить положение (зелёная ракета и наём в команду)
Боты выглядят куда более похожеми на людей, чем нубы в мобайле.

Просто перетерпите этот момент с недоработанной оптимизацией и ждите новых обновлений. Увидимся на поле боя!

Раковой ящер из Бахрейна

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

События

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

Данные, используе­мые для отслежи­вания информации

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

Связанные
с пользова­телем данные

Может вестись сбор следующих данных, которые связаны с личностью пользователя:

  • Покупки

  • Пользова­тель­ский контент

  • Идентифика­торы

  • Данные об использова­нии

  • Диагностика

Не связанные
с пользова­телем данные

Может вестись сбор следующих данных, которые не связаны с личностью пользователя:

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

Информация

Провайдер
KRAFTON Inc

Размер
1,3 ГБ

Категория

Игры

Возраст
12+
Малое/умеренное количество реалистичного насилия

Copyright
©2017 KRAFTON, Inc. All rights reserved.

Цена
Бесплатно

  • Сайт разработчика

  • Поддержка приложения

  • Политика конфиденциальности

Другие приложения этого разработчика

Вам может понравиться

Zip’em ALL!.

Оптимизация использования памяти Redis для… | by AlekseyL

Оптимизация использования памяти Redis для строк, целых чисел, jsons и всего, что вам нравится

Что внутри:

  • Сколько стоит +1 символ к каждому ключу Redis, и стоит ли оптимизация имён ключей?
  • Абстракция хранилища ключей/значений поверх хэшей redis. Получите в 10 раз меньше памяти для хранимых целых чисел или получите 5% скидку на память для среднего предварительного просмотра.
  • GZip или не gzip — сравнение сжатия и других типов оптимизации памяти на различном диапазоне данных.
  • Представляем me-redis gem — все типы оптимизации памяти Redis в одном наборе инструментов. Крошечные изменения кода для максимального результата!
  • Экономия памяти (от 2,5 до 12 раз меньше памяти) и снижение производительности в цифрах.

Универсальные идеи по оптимизации памяти

Redis — одно из самых популярных хранилищ данных в памяти, обеспечивающее молниеносную скорость O(1) для большинства операций. Чтобы сохранить это таким образом, redis отказывается от каких-либо дополнительных манипуляций с данными, таких как: сжатие значений, измельчение ключей, автоматическое сжатие небольших объектов и так далее. Я вижу две основные причины для такого решения: однопоточный характер Redis и неосведомленность о структуре данных на стороне Redis. Вы не можете изменить природу Redis на многопоточность, но вы можете оптимизировать способ хранения своих данных.

Вот три различных относительных универсальных идей о том, как эффективно использовать память:

  1. Сократите свои ключи
  2. Абстрактное простое хранение ключей/значений поверх хэша для небольших объектов
  3. Сжатие значений на стороне приложения
  4. 7 Они все имеют свои ограничения и должны использоваться должным образом. Я пробовал их все, разные виды их комбинаций и резюмировал их для me-redis gem как готовый к работе набор инструментов.

    Ключи для молнии

    Давайте начнем с изучения длины ключа. Обычной точкой зрения является то, как длина ключа влияет на производительность: влияет ли длина имени на производительность в Redis? Производительность Redis — имеет ли значение длина ключа? и так. Но насколько один дополнительный символ ко всем клавишам повлияет на используемую память?

    Простым предположением, что размер памяти, выделенной только для хранения ключей, будет равен key.length * Keys.count, поэтому +1 символ для каждого ключа может увеличить используемую память на +Keys.count байт.

    Ведь это довольно точно!

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

    В числах: целочисленное значение 1, хранящееся в 10 000 пар ключ/значение, потребляет около 0,6 МБ памяти для 3 символов на ключ, 0,9 МБ для 20 символов на ключ и 2,2 МБ для 128 символов на ключ. Проверка потребления памяти от 3 символов до 128 выявит тенденцию — 1 байт на символ . Дополнительные сведения и примеры архивирования ключей см. в разделе кода внизу.

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

    Абстракция простого хранилища ключей и значений поверх хэша

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

    Предположим, что объекты, которые мы хотим кэшировать, пронумерованы, например:

    объект:102393

    объект:1234

    объект:5

    объект:5

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

    Например, объект с именем «объект: 1234» фактически разделен на:

    Ключ с именем объект: 12

    a Поле с именем 34

    Таким образом, мы используем все символы, кроме двух последних для ключа и последних двух символов для имени хеш-поля. Чтобы установить наш ключ, мы используем следующую команду:

    HSET object:12 34 somevalue

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

    Подводные камни хеш-абстракций

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

    Пример:

     # код, аналогичный руководству по Redis 
    # без hash-max-ziplist-entries осведомленностьdef custom_incr(key)
    split = key .scan(/(.*)(\d{2,2}) $/). flatten
    split.length == 0 ? ключ .scan(/(.*)(\d{1,1})$/).flatten : split
    hincrby(*split, 1)
    endredis.pipelined {
    10000.times {|i| redis.custom_incr("user:#{i}") }
    }

    Выделяет только 70 КБ для 10 КБ записей! Это потому, что i является следствием. Сделаем ДЫРЫ!

     redis.pipelined { 
    10000.times {|i| redis.custom_incr("user:#{rand(1000000)}") }
    }

    Офигеть, это 685Kb, практически такого же размера, как incr . Конечно, подойдет, так как 1000000/10000 равно 100 — точному размеру шарда. Это означает примерно один элемент на хеш, «настоящая оптимизация»!

    hash-max-ziplist-value и hash-max-ziplist-entries

    Темы Redis Пример кода (не сама тема) на самом деле игнорирует их. Но вам нужно либо установить hash-max-ziplist-entries на 100, либо использовать реальное значение hash-max-ziplist-entries в качестве размера сегментирования, чтобы быть продуктивным.

    Например, если значение по умолчанию для hash-max-ziplist-entries равно 64, то использование 100 в качестве размера сегментирования — плохая идея, потому что:

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

    То же самое с hash-max-ziplist-value вам нужно знать размер hash-max-ziplist-value , иначе вы нарушите оптимизацию и вернетесь к обычным парам ключ/значение.

    Если значение hash-max-ziplist-entries больше, чем размер сегмента, это не катастрофа, а просто пустая трата ресурсов. Для данного случая «дырявой молли» реальное число из записей hash-max-ziplist было на самом деле 512, а 412 слотов были «потеряны». Использование размера сегментирования 512 дало бы нам примерно 5 ключей на хеш и 260 КБ выделенной памяти по сравнению с 700 КБ для прямого ключа/значения.

    Резюме хеш-абстракций:

    Этот вид оптимизации должен:

    • знать размер хранимых данных,
    • знать структуру ключей структура ключей ),
    • знает о значениях hash-max-ziplist-value и hash-max-ziplist-entries или устанавливает их напрямую, чтобы эта оптимизация памяти работала.

    Скидка на память ограничена: вам не может получить более 90 байт из каждой пары ключ/значение! Это может быть огромным выигрышем для хранения целых чисел, и только 10% для строк размером 1 КБ, например, короткие превью на главной странице medium.com имеют размер 5 КБ, поэтому тогда это на 5% меньше памяти.

    Сжатие значений

    Это не специфичная для Redis тема, поэтому сразу перейду к резюме.

    Плохие части:

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

    Хорошая часть: это может быть единственный способ оптимизировать потребление памяти для больших значений.

    Zip’em ALL, представляем гем me-redis

    Отказ от ответственности: я — состояния для эффективного использования памяти.

    Особенности:

    • бесшовная интеграция с уже используемым кодом, за исключением методов me_*, все это находится в конфигурации MeRedis, а не в вашем текущем коде.
    • оптимизация хэш-ключа/значения с плавным изменением кода, вы можете заменить set('object:id', value) на me_set('object:id', value) и освободить 90 байт для каждого ['object :id', значение] пар.
    • заархивирует удобные для пользователя фрагменты ключей, т.е. преобразует, например, user:id в u:id
    • zip целые части ключей с кодировкой base62. Так как все ключи в Redis всегда являются строками, то нам не нужна база целых чисел, а с помощью кодировки base62 мы можем в ~1,8 раза сократить целочисленные крошки ключей
    • относится к конвейерному и мульти , корректно работает с фьючерсами.
    • разные компрессоры для разных пространств имен ключей. Вы можете сжимать объекты, короткие строки, большие строки, примитивы наилучшим образом подходящим образом друг к другу.
    • модуль горячей миграции с запасными вариантами.

    Скидка на память в цифрах

    Сравнение потребления памяти выполняется для 100 тыс. пар ключей из вопроса stackoverflow: set-allBooksBelongToUser:id , hash-max-ziplist-value установлено достаточно большим, чтобы содержать любую часть проверенных данных.

    Наборы значений: целые числа, простые английские строки переменной длины, фрагменты html переменной длины, ActiveRecord объектов json сериализации двух разных моделей. Значения внутри ячеек представляют собой МБ используемой памяти, очищенной от чистого использования базовой памяти Redis (~ 500 КБ).

    Это все в таблицах, но я краток по всему резюме:

    • лучший результат В 12 раз меньше памяти для сжатия целых чисел в хеш-абстракцию с застежкой-молнией по ключу.
    • другие типы данных: короткие простые английские строки smaz компрессор показывает лучший результат — в 3 раза меньше памяти (это вообще бесполезный компрессор, но все же для примера), в 2,5-3 раза меньше памяти для больших строк или html кусков с gz сжатие, В 3 раза меньше памяти для сериализации объектов с кастомным компрессором и полным набором оптимизации.
    • идея оптимизированных компрессоров для пространств имен может работать хорошо, поскольку не существует универсального компрессора для всех типов данных. Вы можете настроить производительность и сжатие независимо друг от друга.
    • использование хеш-оптимизации лучше работает с маленькими типами и не так хорошо с большими, потому что дает почти фиксированный результат, освобождая ~100 байт на пару.

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

    На уровне Redis мы говорим только о сравнении производительности хэш-абстракции с классическими методами. Итак, мы сравниваем get/set/incrby с hget/hset/hincrby, а также расширенные команды, такие как getset, mget, mset, с многократными вызовами hget/hset, обернутыми транзакциями.

    • get/hget VS incrby/hincrby — то же самое,
    • hset VS set hset немного быстрее.
    • mget/mset VS multi + mget/hset mget/mset работают быстрее, в зависимости от того, сколько значений мы пытаемся установить одновременно.

    Вы можете перепроверить все с помощью инструмента redis-benchmark самостоятельно.

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

    Я буду измерять производительность только чистого метода me_method для одного пространства имен, исключая влияние сжатия. Одиночные вызовы идут от одинакового для me_set/me_get/me_incr до замедления в 1,7 раза для me_mset/me_mget , для 10 конвейерных операций подряд me_get/me_set/me_incr

    0 методы показывают 300690 замедление, me_mset/me_mget в 2-3 раза медленнее, чем mset/mget , для 100 конвейерных операций подряд me_get/me_set/me_incr показывают аналогичные результаты — замедление на 30–50%, me_mset/me_mget’s замедление показывает логарифмический рост — до 3,5–4 раз менее производительно. Все подробности в нижнем разделе.

    Компромисс сжатия — зависит от алгоритма и уровня сжатия, вам решать, что лучше для вас.

    Ссылки:

    1. Официальное руководство Redis по оптимизации памяти.
    2. Как мы сократили использование памяти на 82%
    3. Влияет ли длина имени на производительность в Redis?
    4. Производительность Redis — имеет ли значение длина ключа
    5. Практические советы Redis по оптимизации памяти
    6. Кэширование с помощью хеширования
    7. Инструмент сравнительного анализа Redis, бенчмаркинг hset/hget
    8. Строки и хэши, вопрос о переполнении стека

    Размер ключа 9 00003: потребление памяти 0VS04 пример архивирования:

    Me методы сырой производительности к исходной

    Пример пользовательских компрессоров

    Пример конфигурации MeRedis

    Ресурсы оптимизации программного обеспечения. С++ и ассемблер. Windows, Linux, BSD, Mac OS X

    См. также мой блог

    Содержание

    • Руководства по оптимизации
    • Библиотека векторных классов
    • Конвертер и дизассемблер объектных файлов
    • Библиотека подпрограмм
    • ForwardCom: открытый стандартный набор инструкций для высокопроизводительных микропроцессоров
    • Тестовые программы для измерения тактов на C++ и ассемблерном коде
    • Отслеживание исключений с плавающей запятой посредством распространения NAN
    • Программа манипулирования CPUID
    • Ссылки

    Руководства по оптимизации

    В этой серии из пяти руководств описано все, что вам нужно знать об оптимизации
    код для микропроцессоров семейства x86 и x86-64, включая советы по оптимизации для C++
    и язык ассемблера, подробности о микроархитектуре и инструкция
    тайминги большинства процессоров Intel, AMD и VIA, а также сведения о различных компиляторах и
    соглашения о вызовах.

    Поддерживаемые операционные системы: DOS, Windows, Linux, BSD, Mac OS X на базе Intel, 32- и 64-разрядные версии.

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

    1. Оптимизация ПО на C++:
    Руководство по оптимизации для платформ Windows, Linux и Mac
    Это руководство по оптимизации для продвинутых программистов на C++.
    Темы включают: Выбор платформы и операционной системы. Выбор
    компилятор и фреймворк. Поиск узких мест в производительности.
    Эффективность различных конструкций C++. Многоядерные системы.
    Распараллеливание с векторными операциями. Диспетчеризация ЦП. Эффективный
    шаблоны контейнерных классов. И т.п.

     
    Имя файла : optimizing_cpp.pdf, размер: 1833301, последнее изменение: 2022-Aug-07.
    Скачать.

     

    2. Оптимизация подпрограмм на языке ассемблера:
    Руководство по оптимизации для платформ x86
    Это руководство по оптимизации для продвинутых программистов на ассемблере.
    и производители компиляторов.
    Темы включают: встроенные функции C++, встроенную сборку и автономную сборку.
    Связывание оптимизированных ассемблерных подпрограмм с программами на языке высокого уровня.
    Создание библиотек подпрограмм, совместимых с несколькими компиляторами и операционными системами.
    Оптимизация по скорости или размеру. Доступ к памяти. Петли. Векторное программирование (XMM, YMM, SIMD).
    Оптимизация ЦП и диспетчеризация ЦП.

     
    Имя файла : optimizing_assembly.pdf, размер: 1507033, последнее изменение: 31 января 2021 г.
    Скачать.

     
    3. Микроархитектура процессоров Intel, AMD и VIA:
    Руководство по оптимизации для программистов на ассемблере и разработчиков компиляторов
    В этом руководстве содержится подробная информация о внутренней работе различных микропроцессоров.
    от Intel, AMD и VIA. Темы включают: внеочередное выполнение, переименование регистров,
    структура конвейера, организация исполнительных блоков и алгоритмы предсказания переходов
    для каждого типа микропроцессора. Описывает многие детали, которые не могут быть найдены
    в руководствах производителей микропроцессоров или где-либо еще. Информация
    основано на моих собственных исследованиях и измерениях, а не на официальных источниках.
    Эта информация будет полезна программистам, которые хотят сделать
    оптимизации, а также создателям компиляторов и изучающим микроархитектуру.

     
    Имя файла : microarchitecture.pdf, размер: 2469772, последнее изменение: 4 ноября 2022 г.
    Скачать.

     

    4. Таблицы инструкций:
    Списки задержек инструкций, пропускной способности и микроопераций
    поломки для процессоров Intel, AMD и VIA
    Содержит подробные списки задержек инструкций, пропускной способности исполнительных блоков,
    разбивка микроопераций и другие подробности для всех общих инструкций по применению
    большинства микропроцессоров от Intel, AMD и VIA. Предназначен в качестве приложения к
    предшествующие руководства. Доступен в виде файла pdf и электронной таблицы (формат ods).

     
    Имя файла : инструкция_tables.pdf, размер: 2188084, последнее изменение: 4 ноября 2022 г.
    Скачать.

     
    Имя файла : инструкция_tables.ods, размер: 543329, последнее изменение: 4 ноября 2022 г.
    Скачать.

     

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

     
    Имя файла : call_conventions.pdf, размер: 1075658, последнее изменение: 2022-Aug-07.
    Скачать.

     

    Все пять руководств
    Загрузите все вышеперечисленные руководства одним zip-архивом.

     
    Имя файла : Optimization_manuals.zip, размер: 7420084, последнее изменение: 4 ноября 2022 г.
    Скачать.

     


    Это набор классов, функций и операторов C++, который упрощает
    используйте векторные инструкции (инструкции с одной инструкцией и несколькими данными) из
    современные процессоры без использования языка ассемблера. Поддерживает SSE2, SSE3, SSSE3, SSE4.1,
    Наборы инструкций SSE4.2, AVX, AVX2, FMA, XOP и AVX512F/BW/DQ/VL. Включает стандартные математические функции.
    Может компилироваться для разных наборов инструкций из одного и того же исходного кода.
    Описание и инструкции.
    Доска объявлений.
    Источник на Github.
    Небольшое видео-инструкция от WhatsaCreel.

    Последний релиз.


    Эту утилиту можно использовать для преобразования объектных файлов между COFF/PE, OMF, ELF и
    Форматы Mach-O для всех 32-битных и 64-битных платформ x86.
    Может изменять имена символов в объектных файлах. Может создавать, изменять и преобразовывать библиотеки функций
    по платформам. Может создавать дамп объектных файлов и исполняемых файлов.
    Также включает очень хороший дизассемблер, поддерживающий SSE4, AVX, AVX2, AVX512, FMA3, FMA4, XOP.
    и наборы инструкций Knights Corner.
    Исходный код включен (GPL). Руководство по эксплуатации.

    Имя файла : objconv.zip, размер: 1070398, последнее изменение: 31 августа 2022 г.
    Скачать.


    Это библиотека оптимизированных подпрограмм, написанных на языке ассемблера. Функции в
    эту библиотеку можно вызывать из C, C++ и других скомпилированных языков высокого уровня.
    Поддерживает множество различных компиляторов под операционные системы Windows, Linux, BSD и Mac OS X, 32- и 64-разрядные версии.
    Эта библиотека содержит более быстрые версии общих функций памяти C/C++ и строковых функций,
    быстрые функции для поиска и разбора строк,
    быстрое целочисленное деление и целочисленное векторное деление,
    а также несколько полезных функций, которых нет больше нигде.

    Пакет содержит библиотечные файлы различных форматов,
    Заголовочный файл C++ и исходный код на языке ассемблера.
    Применяется общедоступная лицензия GNU. Руководство по эксплуатации.

    Имя файла : asmlib.zip, размер: 793806, последнее изменение: 13 ноября 2022 г.
    Скачать.


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

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

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

    Введение: www.forwardcom.info. Инструкция
    ФорвардКом.


    Тестовые программы, которые я использовал для своего исследования.
    Может измерять тактовые циклы и счетчики монитора производительности, такие как
    промахи кеша, неправильные предсказания ветвлений, задержки ресурсов и т. д. в небольшом фрагменте
    код на C, C++ или ассемблере. Можно также настроить счетчики монитора производительности для
    чтение внутри другой программы.
    Поддерживает Windows и Linux, 32- и 64-битный режим, несколько потоков.

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

    Имя файла : testp.zip, размер: 940981, последнее изменение: 20 мая 2022 г.
    Скачать.


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

     
    Имя файла : nan_propagation.pdf, размер: 212063, последнее изменение: 27 апреля 2020 г.
    Скачать.


    Это программа, которая может изменить строку поставщика CPUID, семейство
    и номер модели процессоров VIA Nano. Видеть
    мой блог
    для обсуждения цели этой программы.

    Имя файла : cpuidfake.zip, размер: 67593, последнее изменение: 08 августа 2010 г.
    Скачать.


    Полезные ссылки по оптимизации программного обеспечения

    Блог Agner's CPU www.agner.org/forum

    CPU-id инструменты и информация www.cpuid.com

    Проводник компилятора Godbolt. Это очень полезный онлайн-инструмент для проверки того, как разные компиляторы обрабатывают фрагмент кода.
    Поддерживает библиотеку векторных классов.
    www.godbolt.org

    Форум Masm www.masmforum.com

    Доска сообщений сообщества ASM
    www.asmcommunity.net/forums. HTML

    Район программиста на ассемблере
    Programmers' Heaven

    Virtual sandpile x86 Информация о процессоре
    www.sandpile.org

    Электронные компьютерные книги www.computer-books.us/assembler.php

    Списки задержки инструкций
    instlatx64.atw.hu/ и uops.info

    Ассемблер NASM
    www.nasm.us/

    Ассемблер FASM и доска объявлений
    flatassembler.net

    Ассемблер JWASM
    www.japheth.de

    Библиотека Yeppp с открытым исходным кодом функций языка ассемблера
    bitbucket.org/MDuhan/yeppp

    MAQAO (Modular Assembly Quality Analyzer and Optimizer), инструмент для анализа и оптимизации двоичных кодов.
    www.maqao.org

    Группа новостей: comp.lang.asm.x86

    Ресурсы Intel

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