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