сишнег знаю выше уровня нуба
|
везет тебе. я тоже хочу знать выше уровня нуба.
Это:
#include <iostream>
#include <conio.h>
#include <windows.h>
int main()
{
__int64 l,fq;
__int64 t1=0,t2=0;
__int64 r1=0,r2=0;
QueryPerformanceFrequency((LARGE_INTEGER*)&fq);
const int cnt = 250000;
const int tests = 100;
int stack_array[cnt]; //массив в стеке
int *heap_array = new int[cnt]; //массив в куче (через указатели)
for(int t=0;t<tests;++t)
{
// первый тест
QueryPerformanceCounter((LARGE_INTEGER*)&t1);
for(int i=0;i<cnt-1;++i)
{
stack_array[i]=stack_array[i+1]+2;
}
QueryPerformanceCounter((LARGE_INTEGER*)&l);
r1 += (l-t1);
// второй тест
QueryPerformanceCounter((LARGE_INTEGER*)&t2);
for(int i=0;i<cnt-1;++i)
{
heap_array[i]=heap_array[i+1]+2;
}
QueryPerformanceCounter((LARGE_INTEGER*)&l);
r2 += (l-t2);
}
std::cout<<"stack array time = "<<(float)r1/(float)fq<<" sec."<<std::endl;
std::cout<<"heap array time = "<<(float)r2/(float)fq<<" sec."<<std::endl;
_getch();
return 0;
}
на моей машине дает такие результаты:
т.е.да, на стеке массивы быстрее. совсем чуть-чуть но быстрее. но их размеры нельзя менять (более того, их размеры должны быть определены на стадии компиляции). + это значение сильно ограниченно. так, например массив в 300000 элементов уже не создается.