Вопросы по теме 'micro-optimization'

Классификация потоков CPU-Core Функция
Я собираюсь написать многопоточную систему обмена сообщениями с общей памятью для доставки сверхбольших объемов сообщений между процессами. Сообщения будут исходить из рабочих потоков веб-сервера. Я хотел бы использовать локальность кеша ЦП, ядра...
350 просмотров

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

цикл for или цикл while, что быстрее?
Возможный дубликат: Какой цикл быстрее, пока или для мы можем использовать цикл for, а также циклы while для той же цели, что быстрее например: я хочу зациклить элемент 1000000000 раз, я должен использовать цикл for или while?...
4098 просмотров
schedule 01.05.2022

Микрооптимизация с локальной переменной длины контура?
Во многих языках программирования и их микрооптимизациях я видел, что объявление длины массива в цикле for влияет на производительность, особенно в PHP и JavaScript: for i = 0, length = arr.length; i < length; ++i Я видел, как этот формат...
213 просмотров

введите vs нажмите ebp; mov ebp, esp; sub esp, imm и leave vs mov esp, ebp; поп-эбп
В чем разница между enter и push ebp mov ebp, esp sub esp, imm инструкции? Есть ли разница в производительности? Если да, то что быстрее и почему компиляторы всегда используют последнее? Аналогично с leave и mov esp, ebp pop...
12168 просмотров

Конечные переменные в методе onDraw()
У меня есть класс, который расширяет View и переопределяет метод onDraw(Canvas canvas) . Это представление запускает анимацию, поэтому onDraw будет вызываться много раз в секунду. Рассмотрим следующий пример... @Override protected void...
325 просмотров
schedule 18.06.2022

Быстрый способ копирования памяти с переводом - ARGB в BGR
Обзор У меня есть буфер изображений, который мне нужно преобразовать в другой формат. Буфер исходного изображения состоит из четырех каналов, 8 бит на канал: альфа, красный, зеленый и синий. Целевой буфер состоит из трех каналов по 8 бит на канал:...
9152 просмотров
schedule 24.04.2022

Есть ли инструмент для проверки краткости программы на языке C?
Например, я хочу проверить, может ли следующий код быть более кратким или нет: for(i = 0; i < map->size; i++){ if(0 < map->bucket[i].n){ p = map->bucket[i].list; while(p){ h = hash(p->key) % n;...
282 просмотров
schedule 09.03.2024

Предотвращает ли чтение массива int из разделяемой памяти конфликты банков?
Я разрабатываю ядро ​​CUDA, которое будет запускаться с 16 потоками на блок потоков. У меня есть массив N int в общей памяти (т.е. на блок потока), который я хочу обработать. Если шаблон доступа потоков является последовательным в массиве,...
363 просмотров

Микрооптимизация DateTime.DayOfWeek
Прежде всего: Я задаю этот вопрос просто для удовольствия и очень хочу научиться. Я должен признать, что люблю возиться с микрооптимизациями (хотя они никогда не приводили к какому-либо значительному увеличению скорости ни в одной из моих...
11002 просмотров

Быстрее ли обрезать список, сделав его равным срезу, или используя del?
Предположим, у меня есть list TruncList с некоторым количеством элементов, превышающим n . Если я хочу удалить n элементов из конца этого списка, будет ли быстрее переопределить список как фрагмент самого себя , сохранив нужные элементы, как...
2206 просмотров

Эффективность: объекты внутри массивов или массивы внутри объектов?
Учитывая одинаковое количество слоев массива/объекта, каждый индекс указывает на одни и те же вещи, каков наилучший порядок вложения массивов и объектов? Я делаю игру на основе сетки, и мне нужно хранить несколько фрагментов информации о каждом...
104 просмотров

x86-64 Относительная производительность jmp
В настоящее время я выполняю задание, которое измеряет производительность различных команд x86-64 (синтаксис at&t). Команда, с которой я несколько смущен, - это команда «безусловный jmp». Вот как я это реализовал: .global uncond uncond:...
1057 просмотров

Могут ли две инструкции выполняться в одном цикле, если один и тот же регистр используется как вход и выход соответственно?
Например, могут ли эти две инструкции начать выполнение в одном и том же цикле или они мешают друг другу? MOV %RAX, (ADDR) # AT&T syntax: store rax POP %RAX
249 просмотров

Оптимизация кода C++ с использованием выражений вместо переменных
У меня вопрос по созданию оптимальной программы на C++. У меня есть функция, которая вычисляет такие выражения, как: c= a/2 c = (a*b)/2 c = (a/2) + b и т. д. лучше использовать переменную для хранения этих значений или просто использовать...
158 просмотров
schedule 12.07.2023

Умножение с константой - imul или shl-add-combination
Этот вопрос о том, как мы умножаем целое число на константу. Итак, давайте рассмотрим простую функцию: int f(int x) { return 10*x; } Как лучше всего оптимизировать эту функцию, особенно когда она встроена в вызывающую программу?...
1635 просмотров
schedule 17.08.2023

Эффективное декодирование длины символа UTF-8 для ненулевого символа в 32-битном регистре
Я сохраняю символ UTF-8 в eax , а позже, при обработке, мне нужно знать, сколько байтов составляет символ. Я сузил этот вопрос, который сводит к минимуму сдвиги и маски, и хотел знать, не упустил ли я где-нибудь какой-нибудь хитрый трюк?...
464 просмотров

Почему скомпилированная лямбда-сборка поверх Expression.Call немного медленнее, чем делегат, который должен делать то же самое?
Почему скомпилированная лямбда-сборка поверх Expression.Call немного медленнее, чем делегат, который должен делать то же самое? И как этого избежать? Объяснение результатов BenchmarkDotNet. Мы сравниваем CallBuildedReal vs CallLambda ; два...
431 просмотров

Полное использование трубопроводов на озере Каби
(Последующий обзор кода вопрос здесь с более подробной информацией о контексте этой петли.) Окружающая среда: виндовс 7 х64 Сообщество VS 2017 Ориентация кода x64 на Intel i7700k (kaby lake) Я не пишу много кода на ассемблере, а...
332 просмотров

Самая быстрая реализация простого виртуального шаблона типа наблюдателя на с ++?
Я изо всех сил пытаюсь реализовать альтернативу для vtables, используя перечисления и тонну макро-магии, которая действительно начинает мешать моему мозгу. Я начинаю думать, что иду не по правильному пути, поскольку код становится все уродливее и...
536 просмотров