Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 01.03.2017
Сообщений: 48
1

Почему memmove быстрее цикла?

01.03.2017, 21:36. Показов 958. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Почему вставка элемента с помощью функции memmove иногда быстрее,чем с помощью цикла?
Ведь memmove можно заменить циклом,но он работает быстрее.И в каком случае memmove будет быстрее цикла?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2017, 21:36
Ответы с готовыми решениями:

Использование memmove()
Приветствую всех. Появилась необходимость использования memmove вот в такой подзадаче: Есть...

Почему при изменении условия цикла ничего не меняется?
Столкнулся с одним непонятным явлением в цикле. Для описания этого явления написал простенькую...

Почему не срабатывает изменение границы цикла, принятое внутри цикла?
Работает цикл for-Next V_Rod = UBound(Rod, 2) For j = 1 To V_Rod For k = 1 To...

Почему push_back() быстрее insert()
Кто-нибудь знает, почему a.push_back(x) в несколько раз быстрее a.insert(a.end(), x). a - вектор,...

6
Заблокирован
01.03.2017, 21:48 2
Цитата Сообщение от getshaky98 Посмотреть сообщение
Почему вставка элемента с помощью функции memmove иногда быстрее,чем с помощью цикла?
Потому что memmove и прочие билиотечные функции могут представлять собой обертку над реальной функцией копирования/перемещения. Эта обретка проверит, какие инструкции поддерживаются процессором и вызовет оптимальную имеющуюся функцию. Например, с SIMD инструкциями SSE, если есть поддержка. Или AVX.
Когда компилируется обычный цикл без явного указания использования SIMD или типа ЦПУ, то берутся базовые инструкции (обычный mov, например), которые переносят меньшее кол-во байт за цикл.
0
117 / 53 / 2
Регистрация: 12.02.2017
Сообщений: 194
01.03.2017, 22:37 3
Цитата Сообщение от getshaky98 Посмотреть сообщение
Почему вставка элемента с помощью функции memmove иногда быстрее,чем с помощью цикла?
Потому что реализации библиотечных функций более сложные чем наши примитивные потуги. Например выравнивание данных по размеру слова и копирование словами, а не байтами.
Цитата Сообщение от getshaky98 Посмотреть сообщение
И в каком случае memmove будет быстрее цикла?
В библиотечных функциях используются те же циклы. Вопрос в реализации алгоритма.
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,078
02.03.2017, 12:03 4
Цитата Сообщение от getshaky98 Посмотреть сообщение
Почему вставка элемента с помощью функции memmove иногда быстрее,чем с помощью цикла?
Какого "цикла"? О каком "цикле" идет речь? Цикл циклу рознь.
0
0 / 0 / 0
Регистрация: 01.03.2017
Сообщений: 48
02.03.2017, 18:59  [ТС] 5
Мне сказали,что не всегда вставка с помощью memmove быстрее,чем c помощью цикла for,но есть случаи,когда быстрее и надо указать эти случаи и почему так работает?
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,078
02.03.2017, 19:01 6
Цитата Сообщение от getshaky98 Посмотреть сообщение
Мне сказали,что не всегда вставка с помощью memmove быстрее,чем c помощью цикла for
Это бессодержательное и бессмысленное утверждение.

Цитата Сообщение от getshaky98 Посмотреть сообщение
но есть случаи,когда быстрее и надо указать эти случаи и почему так работает?
Поэтому ни о каком осмысленном "указывании случаев" тут не может быть и речи.
0
Заблокирован
02.03.2017, 19:34 7
Цитата Сообщение от getshaky98 Посмотреть сообщение
Мне сказали,что не всегда вставка с помощью memmove быстрее,чем c помощью цикла for,но есть случаи,когда быстрее и надо указать эти случаи и почему так работает?
Учитывая, что это библиотечная функция, которую каждый реализует, как может/хочет, о каких вообще утверждениях может идти речь?
0
02.03.2017, 19:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2017, 19:34
Помогаю со студенческими работами здесь

Почему Erlang быстрее и параллельнее?
Здрасте! Провожу что-то типо исследования, тема "Erlang процессы", если быть более подробным нужно...

Почему линукс работает быстрее?
Почему линукс работает быстрее винды?

Электрон быстрее дырки, почему?
Собственно, почему электрон движется быстрее дырки, если дырка - отстутсвие электрона, а значит...

Почему USB порт быстрее параллельного?
Добрый вечер. Требуется помощь: почему USB порт быстрее параллельного?


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru