은 내가 forward_list
으로 목록을 변경 std::forward_list
char가있는 forward_list를 사용하는 것이 왜 오래 오래 사용하는 것보다 훨씬 최적화되어 있습니까?
#include <iostream>
#include <list>
#include <forward_list>
#include <windows.h>
int main()
{
LARGE_INTEGER start_;
LARGE_INTEGER end_;
LARGE_INTEGER freq;
QueryPerformanceFrequency(&freq);
std::list<long long> list;
QueryPerformanceCounter(&start_);
for(long long i=0;i<50000000;i++)
list.push_front(i);
QueryPerformanceCounter(&end_);
std::cout<< (end_.QuadPart - start_.QuadPart)/(freq.QuadPart/1000) <<"\n";
cin.get();
}
와 std::list
을 비교하는 코드 아래 사용. 모두 결과 시간과 크기를 측정 :
//long long
// size time
//forward list 1157.3 2360
//list 1157.3 2450
그리고이 코드에 대해 동일한 작업을 수행합니다
int main()
{
LARGE_INTEGER start_;
LARGE_INTEGER end_;
LARGE_INTEGER freq;
QueryPerformanceFrequency(&freq);
std::list<char> list;
QueryPerformanceCounter(&start_);
for(long long i=0;i<50000000;i++)
list.push_front('a');
QueryPerformanceCounter(&end_);
std::cout<< (end_.QuadPart - start_.QuadPart)/(freq.QuadPart/1000)<<"\n";
std::cin.get();
}
결과 :
//char
// size time
//forward list 773 2185
//list 1157 2400
문제는 왜 std::forward_list
파크를 사용하고 있습니다 char는 std::list
과 비교해 오랫동안 사용하는 것보다 훨씬 낫습니다.
속도는 거의 같지만 용기의 크기는 얼마입니까?
//long long
// size(mb) time
//forward list 1157.3 2360
//list 1157.3 2450
//char
// size(mb) time
//forward list 773 2185
//list 1157 2400
무료 차트 포르노 : https://docs.google.com/spreadsheets/d/1F8lmLjFtIrDJb_FUauP1L_7m6bsiLFJSv2hyLV3tI3o/edit?usp=sharing (내 컴퓨터에서 수집 한 결과). 당신은 아직도 이것들 사이에 중요한 차이가 있다고 생각합니까? –