Alexey Navoykov : 산술 연산 에 관한 것이 아닌 것 같습니다. 거기에 없기 때문에 모든 값은 컴파일 단계에서 계산됩니다. 그 이유는 반복 횟수를 알 수 없는 주기가 있기 때문입니다(이러한 반복 횟수는 평균 2회 미만이지만). 따라서 코드는 알려진 수의 rand() 호출에 의해 어떻게 든 최적화됩니다.
// Некоторые возможности структур, которых нет у классов.// #define struct class // Смотрим ошибки, которые возникают при замене структур на классы.struct A
{
public :
int i;
uint Save( constint handle) { return ( FileWriteStruct (handle, this )); } // Запись себяuint Load( constint handle) { return ( FileReadStruct (handle, this )); } // Чтение себя
};
// Использование в объединенияхunion UNION
{
uchar b1[ sizeof (A)];
A b2;
};
// Выравниваниеstruct pack( sizeof (A)) B : public A
{
short j;
};
// Структура со скрытым полемstruct C : private A
{
public :
void Set( constint Num ) { this .i = Num; }
int Get( void ) const { return ( this .i); }
};
// Структура с неизменяемым полем.struct D
{
public :
const A a;
};
template < typename T1, typename T2>
void FromTo( const T1 &ValueFrom, T2 &ValueTo )
{
uchar Bytes[];
StructToCharArray (ValueFrom, Bytes); // В массив байтовCharArrayToStruct (ValueTo, Bytes); // Из массива байтов
}
voidOnStart ()
{
A a[ 1 ] = { 0 };
FileReadArray ( 0 , a); // Чтение массиваFileWriteArray ( 0 , a); // Запись массиваArrayCopy (a, a); // Копирование массивовZeroMemory (a); // Обнуление массивов
C c; // Структура со скрытым полем
c.Set( 7 );
FromTo(c, a[ 0 ]);
Print (a[ 0 ].i); // Достали значение приватного поля из C.
D d; // Структура с неизменяемым полем.
a[ 0 ].i = 5 ;
FromTo(a[ 0 ], d);
Print (d.a.i); // Изменили const-поле.
FromTo(a[ 0 ], c);
Print (c.Get()); // Изменили private-поле.
}
또한 클래스 객체 는 동일한 POD 구조의 객체보다 16바이트 더 큽니다. 저것들. 구조의 배열은 훨씬 더 경제적입니다.
산술 연산 에 관한 것이 아닌 것 같습니다. 거기에 없기 때문에 모든 값은 컴파일 단계에서 계산됩니다. 그 이유는 반복 횟수를 알 수 없는 주기가 있기 때문입니다(이러한 반복 횟수는 평균 2회 미만이지만). 따라서 코드는 알려진 수의 rand() 호출에 의해 어떻게 든 최적화됩니다.
https://www.mql5.com/en/forum/308881/page3#comment_11222192
프로세서 개발자는 어떻습니까? 생성기 - 소프트웨어가 구현되었습니다.
당연히 아니지. 이 생성기는 하드웨어로 구현됩니다. 프로그래밍 방식으로 이 속도는 달성할 수 없습니다. 이것은 명백합니다.
당연히 아니지. 이 생성기는 하드웨어로 구현됩니다. 프로그래밍 방식으로 이 속도는 달성할 수 없습니다. 이것은 명백합니다.
음, 실제로, 그들은 하드웨어에서 RANDOM 생성기를 구현하고, rand()는 의사-랜덤 생성기입니다. 참고서에 이에 대해 설명되어 있습니다.
매스랜드
0에서 32767 사이의 의사 난수 정수를 반환합니다.
음, 실제로, 그들은 하드웨어에서 RANDOM 생성기를 구현하고, rand()는 의사-랜덤 생성기입니다. 참고서에 이에 대해 설명되어 있습니다.
나는 하드웨어에 익숙하지 않지만 아마도 실망할 것입니다. 매우 빠르게 작동하지 않는 것 같으며 의사 난수를 위한 시드로서만 좋습니다.재 그루터기 - 의사.
임의의 것들은 훨씬 느립니다( https://en.wikipedia.org/wiki/RdRand )
재 그루터기 - 의사.
임의의 것들은 훨씬 느립니다( https://en.wikipedia.org/wiki/RdRand )
글쎄, 그들은 의사를 넣었습니다. 하지만 rand()는 프로그래밍 방식으로 구현됩니다. 아마도 지나가는 "선배"동지 중 한 명이 이것을 확인할 것입니다.
글쎄, 그들은 의사를 넣었습니다. 하지만 rand()는 프로그래밍 방식으로 구현됩니다. 아마도 지나가는 "선배"동지 중 한 명이 이것을 확인할 것입니다.
하지만 rand()는 프로그래밍 방식으로 구현됩니다. 아마도 지나가는 "선배"동지 중 한 명이 이것을 확인할 것입니다.
예, 아마도 당신이 옳을 것입니다.
사전 난수를 생성하기 위한 이 버전의 rand16() 함수는 원래 함수보다 2배 미만 느리고 0에서 65535 사이의 난수를 생성합니다.
저것들. 2나노초 미만.
또한 클래스 객체 는 동일한 POD 구조의 객체보다 16바이트 더 큽니다. 저것들. 구조의 배열은 훨씬 더 경제적입니다.
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
Symbol()과 _Symbol의 차이점
fxsaber , 2019.07.07 14:47
Symbol()이 :: 없이 클래스/구조체 내부에서 호출되면 미리 정의된 변수보다 더 편리할 수 있습니다. 같은 이름의 메서드를 선언하여 빠르게 대체할 수 있습니다.