Skip to content

**** ****

for my bad memories..

Vector 속도 테스트


이미 요소의 갯수를 알고 있을때의 속도 테스트를 해봄..
테스트 비교는
Raw Array, C로 구현된 Vector (https://github.com/goldsborough/vector), C++ FBVctor (https://github.com/facebook/folly/blob/master/folly/docs/FBVector.md), C++ Standard Vector

#include <iostream>
#include <chrono>

#include <folly/memory/Malloc.h>
#include <folly/FBVector.h>

#include <vector>

#include <vector/vector.h>

int main(void)
{
	{
		std::chrono::system_clock::time_point start = std::chrono::system_clock::now();

		unsigned int *vec = (unsigned int *)malloc(1000000000 * sizeof(unsigned int));

		for(unsigned int i=0; i<1000000000; i++) {
			vec[i] = i;
		}

		std::chrono::duration<double> sec = std::chrono::system_clock::now() - start;
		std::cout << "array: Time passed (sec) : " << sec.count() << " seconds" << std::endl;

		std::cout << "Press any key to next test." << std::endl;
		getchar();
		
		free(vec);
	}

	{
		std::chrono::system_clock::time_point start = std::chrono::system_clock::now();

		Vector vec;
		vector_setup(&vec, 1000000000, sizeof(unsigned int));

		for(unsigned int i=0; i<1000000000; i++) {
			vector_push_back(&vec, &i);
		}

		std::chrono::duration<double> sec = std::chrono::system_clock::now() - start;
		std::cout << "C Vector: Time passed (sec) : " << sec.count() << " seconds" << std::endl;

		std::cout << "Press any key to next test." << std::endl;
		getchar();
		
		vector_clear(&vec);
		vector_destroy(&vec);
	}

	{
		std::chrono::system_clock::time_point start = std::chrono::system_clock::now();

		folly::fbvector<unsigned int> vec;
		vec.reserve(1000000000);
		for(int i=0; i<1000000000; i++) {
			vec.push_back(i);
		}

		std::chrono::duration<double> sec = std::chrono::system_clock::now() - start;
		std::cout << "C++ FBVector: Time passed (sec) : " << sec.count() << " seconds" << std::endl;

		std::cout << "Press any key to next test." << std::endl;
		getchar();
		
		vec.clear();
		vec.shrink_to_fit();
	}

	{
		std::chrono::system_clock::time_point start = std::chrono::system_clock::now();

		std::vector<unsigned int> vec;
		vec.reserve(1000000000);
		for(int i=0; i<1000000000; i++) {
			vec.push_back(i);
		}

		std::chrono::duration<double> sec = std::chrono::system_clock::now() - start;
		std::cout << "C++ Vector: Time passed (sec) : " << sec.count() << " seconds" << std::endl;

		std::cout << "Press any key to exit." << std::endl;
		getchar();

		vec.clear();
		vec.shrink_to_fit();
	}

	return 0;
}
array: Time passed (sec) : 2.27096 seconds
Press any key to next test.

C Vector: Time passed (sec) : 11.588 seconds
Press any key to next test.

C++ FBVector: Time passed (sec) : 6.22477 seconds
Press any key to next test.

C++ Vector: Time passed (sec) : 14.0583 seconds
Press any key to exit.

결과는 Raw Array 가 가장 빠름.


Categorized as: Programming



답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다


이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.