Войти
ПрограммированиеФорумГрафика

Математическая библиотека для физики и графики..и.т.д ! (3 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#30
(Правка: 22:35) 22:30, 1 фев. 2018

/A\
> Я не пытался показать лучший код, я говорю что его код может сломаться если у
> структуры будет задано выравнивание и элементы окажутся не плотно упакованы,
> тогда по индексу 1 окажется не 'y' а пустое место оставленное для выравнивание,
> это конечно маловероятный случай, но все же.
Тогда надо делать через массив v[4]  который будет обеденёон  в union с (x , y , z, w ) Ну тобишь все пирименые будут указывать на одну и туже область памятьи . И перезагружать оператор так :

const T & operator[](const int& n) const
{
   assert( n >= 0 && n < 4 );
   return v[n];
}
Да ? Или нет ?
А почему v[] , а не data[] ?

P.S: Избавляться от пирименых x,y,z,w категорический запрещено вышыми силами !


#31
22:38, 1 фев. 2018

werasaimon
>
> Тогда надо делать через массив v[4]  который будет обеденёон  в union с (x , y
> , z, w ) Ну тобишь все пирименые будут указывать на одну и туже область памятьи
> . И перезагружать оператор так :
да
werasaimon
>
> А почему v[] , а не data[] ?
А почему не Вася а Петя?

#32
22:47, 1 фев. 2018

werasaimon
достаточно в функции написать
static_assert(sizeof(*this) == sizeof(T[4]), "");
тогда просто не скомпилируется

#33
(Правка: 23:17) 23:11, 1 фев. 2018

denesik
> А почему не Вася а Петя?
Потому что вася мене информатвное имя чем Петя , в данной ситуации ! Ваааааааасилыыыыыыыыыий )))

/A\
> достаточно в функции написать
> static_assert(sizeof(*this) == sizeof(T[4]), "");
> тогда просто не скомпилируется
Типа этого :

const T & operator[](const int& n) const
{
   static_assert(sizeof(*this) == sizeof(T[4]), "");
   assert( n >= 0 && n < 4 );
   return (&x)[n];
}
Или что ты имееш виду ?


P.S: А знаете что ?

#34
23:25, 1 фев. 2018

werasaimon
> Типа этого :
да

#35
3:11, 2 фев. 2018

werasaimon
> const T & operator[](const int& n) const

Ссылка тут не нужна, кстати, она не экономит ничего. Передавай по значению.

#36
(Правка: 22:03) 22:01, 2 фев. 2018

denesik
> Ссылка тут не нужна, кстати, она не экономит ничего. Передавай по значению
Сылка указывает не постретсвено на область памяти пирименых , чтоб компилятор не делал копию уже инцилизированых пирименых . И плюс это правило хорошого кода !


P.S: Кто-то умеет в алгебру Келли?

#37
23:08, 2 фев. 2018

denesik
> Ссылка тут не нужна, кстати, она не экономит ничего. Передавай по значению.
вариант 1

T operator [] (int i) const {}

const vec v;
v[0] += 1; // ok

вариант 2

const T& operator [] (int i) const {}

const vec v;
v[0] += 1; // fail

И что из этого правильно?
Но конечно именно ссылка не играет роли, но без ссылки можно забыть сделать константный результат.

#38
23:55, 2 фев. 2018

/A\
> И что из этого правильно?

const int& n
я про эту ссылку. Она бесполезная
#39
(Правка: 20:44) 20:44, 3 фев. 2018

denesik
Чемь  эта ссылка там мишает ?

#40
10:00, 4 фев. 2018

werasaimon
Встроенные типы данных в C++ правильно передавать по значению.
Я даже год или два назад видел результаты сравнения произодительности этих двух способов. По значению быстрее.

#41
10:01, 4 фев. 2018

Слабоватая библиотека.

#42
(Правка: 11:51) 11:49, 4 фев. 2018

Prolen
> Слабоватая библиотека.
почему ? В CMath всё эсть . Даже октонион для струн,  и ,тензорные примочки для релятьвиской физики .и.т.д !


Vlad2001_MFS
> Встроенные типы данных в C++ правильно передавать по значению.
> Я даже год или два назад видел результаты сравнения произодительности этих двух
> способов. По значению быстрее.
>
А почему ?

#43
14:01, 4 фев. 2018

werasaimon
> А почему ?
Потому что компилятор не осилил оптимизацию, такое бывает, если ему что-то мешает.
Но если функция инлайнится, то потерь в производительности быть не должно

#44
(Правка: 5 фев. 2018, 0:50) 21:50, 4 фев. 2018

/A\
> Потому что компилятор не осилил оптимизацию, такое бывает, если ему что-то
> мешает.
> Но если функция инлайнится, то потерь в производительности быть не должно
Ну я ведь всё заинлайнил . Что же мне делать __forceilnine , или что ?

P.S : что делает эта дериктива  __attribute__((aligned(8))) . И как это помогает оптимизировать код ? Она выравнивает длину кешеривания  под ×64


Может кто подскажет в чёмь разница между file.h и file.hpp?

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумГрафика