LINUX.ORG.RU

Оптимизация кода.


0

2

Подскажите пожалуйста, как можно «оптимизировать» такой код:

uint8_t *p;
j=htonl(i);
p=&j;
buff[i] = p[1];

По большей части не могу придумать как избавиться от временной переменной «j».

★★★★★

Ответ на: комментарий от Jetty

Спасибо. Ну это не совсем упрощение :), хотя и правда минус переменная. Пока что пользуюсь STL string

uint32_t tmp;
string raw;

tmp = htonl(intval);
raw += string((char *) &tmp, sizeof(tmp));
tmp = htonl(intval2);
raw += string((char *) &tmp, sizeof(tmp));

Jetty ★★★★★ ()

Есть же union:

union {
  uint8_t p[4];
  uint32_t j;
} v;
v.j = htonl(i);
buff[i] = v.p[1];

Laz ★★★★★ ()

Слишком искусственная проблема для оптимизации. Можно просто поставить этот участок в отдельную функцию/макрос.

mikki ()
Ответ на: комментарий от mikki

Лишняя строчка при большом количестве таких вот присвоений является совсем не искуственной. Хотелось чего-то в духе:
raw += (char *) &htonl(tmp);
Но это слишком брутально )

Jetty ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.