1 | |||||||||||||||||||||
Как работает memcpy?17.01.2010, 20:06. Показов 4947. Ответов 7
Метки нет (Все метки)
Небольшой вопрос по поводу memcpy.
Какая из функций будет работать быстрее?
1 вариант
2 вариант
Я сам конечно понимаю, что скорее всего второй вариант адекватнее, но хотелось бы узнать подробности И второй вопрос, как сделать реверс числа, тобишь из числа типа 0xABCD надо получить 0xDCBA... Я тут набросал небольшой кусок, но он совсем отвратный..))) Хочется более красивое решение )).. реверс
0
|
17.01.2010, 20:06 | |
Ответы с готовыми решениями:
7
Memcpy, buffer overflow. Может ли возникнуть ошибка в функции memcpy Не работает memcpy Как избавиться от побайтового копирования? memcpy Не получается использовать std::copy как memcpy? |
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
||||||
17.01.2010, 20:21 | 2 | |||||
1. Я что то не понял. А для чего для этого вообще функцию писать надо? просто нельзя присвоить? Зачем передавать size если он известен (4 бита).
2. Красивее было было бы пройтись циклом: записал в temp переменную последний бит сместил на 1, записал 2 бит, сместил на 1 и т.д.
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||||||
17.01.2010, 20:41 | 4 | |||||
1. Вариант с memcpy, безусловно, лучше. Системные функции типа memcpy разрабатывают достаточно квалифицированные инженеры, вполне себе отдающие отчет в том, насколько часто такие функции будут вызываться; и поэтому код таких функций оптимизируется очень хорошо. Более того, некоторые компиляторы (например, MSVC++) вообще инлайнят эти функции, поэтому даже затрат на вызов в реальном коде нет.
Цикл, кстати, компилятор тоже может заинлайнить; но тут все же неопределенность больше. 2.
1
|
17.01.2010, 20:52 [ТС] | 5 |
CheshireCat, Спасибо большое.
Вообще я думал о том, что memcpy вызвать надо всего один раз и уже это навело на мысль о его превосходстве )).. С реверсом понравилось)).. симпатично))..
0
|
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
|
|
17.01.2010, 21:10 | 6 |
почитай тогда книгу "Алгоритмические трюки для программистов". там много всего с битами.
1
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
||||||
17.01.2010, 21:23 | 7 | |||||
Заучился
Так... по первому - ассемблированного кода на первый вариант чуть поменьше. Однако:
0
|
17.01.2010, 21:41 [ТС] | 8 |
Ну я вообще не особо доверял бы всяческим GetTickCount при тестировании.
0
|
17.01.2010, 21:41 | |
17.01.2010, 21:41 | |
Помогаю со студенческими работами здесь
8
Memcpy работает медленно Memcpy криво работает Memcpy memset, memcpy Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |