#define ARRAY_SIZE int ( 100 )
#include <Arrays\ArrayObj.mqh>
class Test : public CObject
{
public :
int a;
double b;
datetime c;
Test(){};
Test( int ai){ this .a = ai;}
};
int COUNT = 1000000 ;
voidOnStart ()
{
FooV3();
}
void FooV1()
{
long t = GetMicrosecondCount ();
Test array[];
ArrayResize (array, COUNT);
for ( int i = 0 ; i < COUNT; i++)
array[i] = Test( MathRand ());
long delta = GetMicrosecondCount () - t;
printf (delta);
}
void FooV2()
{
long t = GetMicrosecondCount ();
Test* array[];
ArrayResize (array, COUNT);
for ( int i = 0 ; i < COUNT; i++)
array[i] = new Test( MathRand ());
long delta = GetMicrosecondCount () - t;
printf (delta);
}
void FooV3()
{
long t = GetMicrosecondCount ();
Test* array[];
ArrayResize (array, COUNT);
for ( int i = 0 ; i < COUNT; i++)
array[i] = new Test( MathRand ());
for ( int i = 0 ; i < COUNT; i++)
delete (array[i]);
long delta = GetMicrosecondCount () - t;
printf (delta);
}
간단히 말해서 더 빠른 포인터는 없습니다. 포인터(V1)가 없는 경우 1.2초, 포인터(V2)가 있는 경우 1.4초입니다. 1.6 - 포인터 및 삭제 포함(V3).
문제가 보이지 않습니다.
따라서 "union u_Data_t" 전에 "static"을 제거해야 합니다.
따라서 "union u_Data_t" 전에 "static"을 제거해야 합니다.
b3062. 실제로 불일치는 올바른 방향이 아닙니다.
숫자는 다음과 같습니다. 이전 테스트 후 코드가 약간 최적화되었습니다.
정적 디버그 및 릴리스 없음, 정적 릴리스 포함 최신
b3062. 실제로 불일치는 올바른 방향이 아닙니다.
그래서 차이가 거의 없다
그래서 약간의 차이가 있습니다
전체 코드와 결과가 포함된 최신 빌드의 분기에 작성합니다. 이러한 구성은 개발자에 의해 전달되지 않습니다.
즉시 답변하는 것이 바람직합니다. 실험할 시간이 항상 있는 것은 아닙니다.
간단히 말해서 더 빠른 포인터는 없습니다. 포인터(V1)가 없는 경우 1.2초, 포인터(V2)가 있는 경우 1.4초입니다. 1.6 - 포인터 및 삭제 포함(V3).
간단히 말해서 더 빠른 포인터는 없습니다. 포인터(V1) 없이 1.2초, 포인터(V2)가 있는 1.4초가 있습니다. 1.6 - 포인터 및 삭제 포함(V3).
잘못된 비교 때문에 개체의 자동 삭제 시간은 고려되지 않습니다.
변경됨.
V3 이후의 123MB는 어디에서 왔는지 - 모르겠습니다.
다음은 비교를 위한 동일한 기능입니다.