Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
eXPonent
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
1

Деление с остатком или маска, что быстрее?

24.05.2017, 18:59. Просмотров 326. Ответов 2

Всем известно, что побитовый сдвиг (<<, >>) выполняется быстрее деления на два.
Деление целых на 2 через битовый сдвиг - архаизм?
и если выражение константа, то компилятор умеет заменять выражения

другое дело:
C++
1
2
3
h&3; 
// или
h%4;
Что работает быстрее?

или и в этом случае компилятор способен заменить на быстрый вариант (но на какой?)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2017, 18:59
Ответы с готовыми решениями:

Деление с остатком
Вот, к примеру, после каких-то вычислений у меня получилось число 4.67, но мне нужно перевести его...

Деление нацело и с остатком
Привет, народ. Помогите разобраться с задачей и ошибками в коде.

Что быстрее: i++ или ++i ?
Только что прочитала в интернете, что префиксный итератор быстрее, чем постфиксный. Так ли это?...

Не выполняется условие. Деление с остатком
Здравствуйте. Есть простенькая программа с последовательностью. Последовательность должна задавать...

Что быстрее assembler или c++
Вопрос от новичка. Что будет быстрее по скорости выполнения и на сколько: 1) сложить a+b на C++...

2
stima
496 / 346 / 93
Регистрация: 22.03.2011
Сообщений: 1,107
Завершенные тесты: 2
24.05.2017, 19:03 2
Если не брать оптимизаций, то

% реализуется через деление (div)
& через битовую операцию (and)

Для Haswel div latency 22-29, а and latecny 1. (http://www.agner.org/optimize/instruction_tables.pdf)

Если с оптимизацией то GCC заменит % на & (X - 1)
0
eXPonent
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
24.05.2017, 19:09  [ТС] 3
Т.е.
Цитата Сообщение от stima Посмотреть сообщение
& (X - 1)
считается оптимизированным вариантом, спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2017, 19:09

Как поставить в с ++ знак деление с остатком?
В с++ я ставлю знак деление вот вот % но компьютер выдаёт ошибку. Как ставить знак деление с...

Упорядочить вектор так, что бы сначала шли числа кратные 3, потом с остатком 2 при делении на 3, потом с остатком 1.
Вектор длины N нужно заполнить случайными целыми числами(от X до Y) и сделать, чтобы сначала шли...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru