// test.cpp : Defines the entry point for the console application. // #include "stdio.h" #include "baseobj.h" #include // GetTickCount() #include using namespace std; typedef list int_list1; // стандартный список typedef legionary::list int_list2; // это наш список int _tmain(int argc, _TCHAR* argv[]) { int n; int_list1 lst1; int_list2 lst2(100000); DWORD t,tt; // даем винде остынуть :) Sleep(500); // замеряем list::push_back() t = GetTickCount(); for(n=0; n < 100000; n++) lst1.push_back(n); tt = GetTickCount(); printf("add 1: %d ms size: %d\n", tt-t, lst1.size()); // замеряем iterator::operator++() int_list1::iterator i1; t = GetTickCount(); for(i1=lst1.begin(); i1!=lst1.end(); i1++) (*i1) = 0; tt = GetTickCount(); printf("walk 1: %d ms\n", tt-t); // замеряем list::erase() t = GetTickCount(); for(; lst1.size()>0; ) lst1.erase(lst1.begin()); tt = GetTickCount(); printf("delete 1: %d ms size: %d\n", tt-t, lst1.size()); // замеряем legionary::list::add_last() t = GetTickCount(); for(n=0; n < 100000; n++) lst2.add_last() = n; tt = GetTickCount(); printf("add 2: %d ms size: %d\n", tt-t, lst2.size()); // проверяем правильность заполнения списка legionary::list int_list2::iterator i2; for(i2=lst2.begin(), n=0; i2.valid() && (n < 10); i2++, n++) printf("%d\n", (*i2)); for(n=0; i2.valid(); i2--) printf("%d\n", (*i2)); // замеряем legionary::iterator::operator++() t = GetTickCount(); for(i2=lst2.begin(); i2.valid(); i2++) (*i2) = 0; tt = GetTickCount(); printf("walk 2: %d ms\n", tt-t); // замеряем legionary::list::remove() t = GetTickCount(); for(; lst2.size();) lst2.remove(lst2.begin()); tt = GetTickCount(); printf("delete 2: %d ms size: %d\n", tt-t, lst2.size()); return 0; }