Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / const C++

const C++

Поделиться
Страницы: 1 2 3 Следующая »
АлмазПостоялецwww2 июля 201023:37#0
Такой вот вопрос: как лучше - так
  const size_t count = sizeof(float) * 3;

  memcpy(&m[0],  _s, count);
  memcpy(&m[4],  _u, count);
  memcpy(&m[8],  _d, count);
  memcpy(&m[12], _p, count);

или вот так?

  memcpy(&m[0],  _s, sizeof(float) * 3);
  memcpy(&m[4],  _u, sizeof(float) * 3);
  memcpy(&m[8],  _d, sizeof(float) * 3);
  memcpy(&m[12], _p, sizeof(float) * 3);
allcreaterПостоялецwww2 июля 201023:40#1
Я точно не знаю, но, скорее всего, компилятор и то и то сведет до констант. =)
PushkoffУдалёнwww2 июля 201023:53#2
я предпочитаю так
enum
{
count = sizeof(float) * 3,
};
АлмазПостоялецwww2 июля 201023:54#3
allcreater
Да, и я к этому склоняюсь, но всё же не уверен.

Pushkoff
Хм, умно)

PushkoffУдалёнwww2 июля 201023:55#4
Алмаз
старайся не пользоваться магическими числами, если число используется несколько раз сохраняй его в переменную или константу (если это возможно)... старайся не пользоваться memcpy, на маленьких массивах от него нет толку...
АлмазПостоялецwww2 июля 201023:57#5
Pushkoff
Насчёт memcpy, до каких размеров массива в использовании нет выгоды?
entrywayПостоялецwww3 июля 20100:05#6
Pushkoff
> старайся не пользоваться memcpy, на маленьких массивах от него нет толку...
Что за чушь?

Лучше MSVC напишешь?

mov         ebp,[esp][2C] 
mov         eax,[esp][30] 
mov         ecx,[esp][34] 
mov         [00545270],ebp
mov         [00545274],eax
mov         [00545278],ecx

Или может лучше Intel?

mov         ecx,[esp][40]
mov         eax,000569194
mov         [eax],ecx
mov         ebx,[esp][44]
mov         [eax][04],ebx
mov         ecx,[esp][48]
mov         [eax][08],ecx

Может и memset-ом для маленьких массивов стараться не пользоваться?

mov         edx,000569194
xor         eax,eax
mov         [edx],eax
mov         [edx][04],eax
mov         [edx][08],eax
PokimonПостоялецwww3 июля 20100:10#7
Алмаз
> memcpy(&m[0], _s, sizeof(float) * 3);
> memcpy(&m[4], _u, sizeof(float) * 3);
> memcpy(&m[8], _d, sizeof(float) * 3);
> memcpy(&m[12], _p, sizeof(float) * 3);
memcpy((float *)memcpy((float *)memcpy((float *)memcpy(m, _s, sizeof(float) * 3) + 3), _u, sizeof(float) * 3) + 3, _d, sizeof(float) * 3) + 3, _p, sizeof(float) * 3);

cNoNimУчастникwww3 июля 20100:13#8
ВЫРВИТЕ МНЕ ГЛАЗА
Изображение
ud1Постоялецwww3 июля 20100:19#9
Pokimon
Тебе не конфиги надо писать, а обфускаторы. И ты ошибся, надо не +3, а +4.
PushkoffУдалёнwww3 июля 20100:25#10
Алмаз
чем больше массив тем больше выгоды...
на массиве из 3 элементов, он вряд ли окупится... 
АлмазПостоялецwww3 июля 20100:26#11
Pushkoff
Но вреда же всё равно не будет?
ud1Постоялецwww3 июля 20100:27#12
Я тестировал давно memcpy, начиная с 16 байт и выше скорость максимальна, при меньших количествах байт скорость уменьшается.
PushkoffУдалёнwww3 июля 20100:27#13
entryway
> Что за чушь?
а теперь сделай листинг 3 присвоений подряд и посмотри на разницу...
PushkoffУдалёнwww3 июля 20100:28#14
Алмаз
> Но вреда же всё равно не будет?
смотря что копировать...
Страницы: 1 2 3 Следующая »

/ Форум / Программирование игр / Общее

Тема в архиве.

2001—2017 © GameDev.ru — Разработка игр