Предпочтение между memcpy и разыменованием
При копировании известной структуры в память, вы бы предпочли использовать memcpy или разыменование? Зачем?
В частности, в следующем коде:
#include <stdio.h>
#include <string.h>
typedef struct {
int foo;
int bar;
} compound;
void copy_using_memcpy(compound *pto, compound *pfrom)
{
memcpy(pto, pfrom, sizeof(compound));
}
void copy_using_deref(compound *pto, compound *pfrom)
{
*pto = *pfrom;
}
int main(int argc, const char *argv[])
{
compound a = { 1, 2 };
compound b = { 0 };
compound *pa = &a;
compound *pb = &b;
// method 1
copy_using_memcpy(pb, pa);
// method 2
copy_using_deref(pb, pa);
printf("%d %d\n", b.foo, b.bar);
return 0;
}
Вы бы предпочли метод 1 или метод 2? Я посмотрел на сборку, сгенерированную gcc, и кажется, что метод 2 использует меньше инструкций, чем метод 1. Означает ли это, что метод 2 предпочтительнее в этом случае? Спасибо.