|
отследить изменение переменной. |
|
|
|
Dec 15 2015, 10:14
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
есть пакет с данными uint8_t packet[20] . переменная uint32_t занимает 4 байта. соответственно если я хочу посмотреть изменилась ли переменная в следующей посылке я могу сделать так Код if (new_packet[0] != old_packet[0] || new_packet[1] != old_packet[1] || new_packet[2] != old_packet[2] || new_packet[3] != old_packet[3]) или так Код if(memcmp(new_packet, old_packet, 4) != 0) вопрос какой способ быстрее?
|
|
|
|
|
 |
Ответов
|
Dec 16 2015, 15:38
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (XVR @ Dec 16 2015, 17:30)  Не всегда - у gcc например это может быть intrinsic функция компилятора (если ему включить оптимизацию, конечно) Договорились. Пререходим к следующему шагу - используем GCC и его intrinsic, получаем результат и сравниваем с: CODE if(*((uint32_t*)&new_packet[4]) != *((uint32_t*)&old_packet[4])) 1db8: 6878 ldr r0, [r7, #4] 1dba: 6873 ldr r3, [r6, #4] 1dbc: 4298 cmp r0, r3
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 16 2015, 15:43
|

Местный
  
Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502

|
Цитата(zltigo @ Dec 16 2015, 15:38)  Договорились. Пререходим к следующему шагу - используем GCC и его intrinsic, получаем результат и сравниваем с: memcmp - то гарантированно работает с невыравненными данными. Если есть 100% гарантия, что данные выравнены, то и заинлайненная memcmp из библиотеки будет на 3 инструкции.
|
|
|
|
Сообщений в этой теме
Jenya7 отследить изменение переменной. Dec 15 2015, 10:14 zltigo QUOTE (Jenya7 @ Dec 15 2015, 12:14) вопро... Dec 15 2015, 10:18 Jenya7 Цитата(zltigo @ Dec 15 2015, 16:18) Один ... Dec 15 2015, 11:09  msalov Цитата(Jenya7 @ Dec 15 2015, 14:09) так ч... Dec 15 2015, 11:33 Dog Pawlowa Ну, для начала желательно знать, что за ядро.
То,... Dec 15 2015, 11:32 Jenya7 Цитата(Dog Pawlowa @ Dec 15 2015, 17:32) ... Dec 15 2015, 11:37  msalov Цитата(Jenya7 @ Dec 15 2015, 14:37) функц... Dec 15 2015, 11:41   Jenya7 Цитата(msalov @ Dec 15 2015, 17:41) Адрес... Dec 15 2015, 11:45    zltigo QUOTE (Jenya7 @ Dec 15 2015, 13:45) допус... Dec 15 2015, 12:00     Jenya7 Цитата(zltigo @ Dec 15 2015, 18:00) Нет, ... Dec 15 2015, 12:07      zltigo QUOTE (Jenya7 @ Dec 15 2015, 14:07) какая... Dec 15 2015, 12:18       Jenya7 Цитата(zltigo @ Dec 15 2015, 18:18) 1) Не... Dec 15 2015, 12:22        zltigo QUOTE (Jenya7 @ Dec 15 2015, 14:22) и все... Dec 15 2015, 12:29        msalov Цитата(Jenya7 @ Dec 15 2015, 15:22) и все... Dec 15 2015, 12:29 zltigo QUOTE (Dog Pawlowa @ Dec 15 2015, 13:32) ... Dec 15 2015, 11:54  Jenya7 Цитата(zltigo @ Dec 15 2015, 17:54) Надо,... Dec 15 2015, 11:56 XVR Цитатакакая структура. у меня функция принимает ма... Dec 15 2015, 12:15 Jenya7 а что можно прямо так ?
(my_struct *) my_arr Dec 15 2015, 13:39 zltigo QUOTE (Jenya7 @ Dec 15 2015, 15:39) а что... Dec 15 2015, 14:48  Jenya7 понял.спасибо. Dec 15 2015, 14:52 Jenya7 сделал листинг ради интереса.
Кодif (new_packe... Dec 16 2015, 08:45 zltigo QUOTE (Jenya7 @ Dec 16 2015, 10:45) можно... Dec 16 2015, 11:07    CrimsonPig Цитата(zltigo @ Dec 16 2015, 15:08) К чем... Dec 16 2015, 15:25     zltigo QUOTE (CrimsonPig @ Dec 16 2015, 17:25) Н... Dec 16 2015, 15:46 XVR gcc 4.8.2 не знает как инлайнить memcmp ( http://g... Dec 17 2015, 11:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|