Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Visit http://pastebin.com/BYpW7dcR to get the original "tVector".
- //Subject : performance test (tVector vs vector)
- double PCFreq = 0.0;
- __int64 CounterStart = 0;
- bool StartCounter()
- {
- LARGE_INTEGER li;
- if(!QueryPerformanceFrequency(&li))return false;
- PCFreq = double(li.QuadPart);
- QueryPerformanceCounter(&li);
- CounterStart = li.QuadPart;
- }
- double GetCounter()
- {
- LARGE_INTEGER li;
- QueryPerformanceCounter(&li);
- return double(li.QuadPart-CounterStart)/PCFreq;
- }
- int main()
- {
- #define __USE_TVECTOR
- int i, j;
- double fTimeTotal = 0;
- std::cout << " Vector performance test" << std::endl;
- std::cout << "----------------------------------------" << std::endl;
- #ifdef __USE_TVECTOR
- tVector<int> vec;
- std::cout << " vector custom version." << std::endl;
- std::cout << "+ tVector<int> time record : " << std::endl;
- #else
- vector<int> vec;
- std::cout << " vector standard version." << std::endl;
- std::cout << "+ vector<int> time record : " << std::endl;
- #endif
- system("pause");
- std::cout << "----------------------------------------" << std::endl;
- ///////////////////////////push_back() test////////////////////////////////////////////////
- std::cout << "\tpush_back() test : ";
- StartCounter();
- for(i = 0;i < 25000000;i++) // requires 100 Mb memory
- {
- vec.push_back(100);
- }
- fTimeTotal += GetCounter();
- std::cout << GetCounter() << " sec" << std::endl;
- std::cout << std::endl;
- std::cout << "\tpop_back() test : ";
- StartCounter();
- for(i = 0;i < 25000000;i++) // Clean up
- {
- vec.pop_back();
- }
- fTimeTotal += GetCounter();
- std::cout << GetCounter() << " sec" << std::endl;
- std::cout << std::endl;
- ///////////////////////////insert() test////////////////////////////////////////////////
- std::cout << "\tinsert() test : ";
- vec.resize(1);
- StartCounter();
- for(i = 0;i < 1000;i++)
- {
- for(j = 0;j < 100;j++)
- vec.push_back(10 * (rand() % 5));
- for(j = 0;j < 50;j++)
- vec.insert(vec.begin() + 10, 100); // Try inserting some elements
- vec.insert(vec.begin() + 10, 20, 100); // Try inserting multiple elements at a time
- }
- fTimeTotal += GetCounter();
- std::cout << GetCounter() << " sec" << std::endl;
- //std::cout << "vector size = " << vec.size() << std::endl << std::endl;
- std::cout << std::endl;
- ///////////////////////////access() test////////////////////////////////////////////////
- std::cout << "\taccess() test : (sum all values)" << std::endl;
- unsigned int temp = 0;
- StartCounter();
- for(i = 0;i < vec.size();i++) //170001 elements total
- {
- temp += vec[i];
- temp += vec.at(i);
- temp += *(vec.begin() + i);
- temp += *(vec.end() - (vec.size() - i));
- }
- std::cout << "\tFinal value = " << temp << std::endl;
- fTimeTotal += GetCounter();
- std::cout << "\tTime : " << GetCounter() << " sec" << std::endl;
- std::cout << std::endl;
- std::cout << "\terase() test : ";
- ///////////////////////////erase() test////////////////////////////////////////////////
- StartCounter();
- while(vec.size())
- {
- vec.erase(vec.begin());
- }
- fTimeTotal += GetCounter();
- std::cout << GetCounter() << " sec" << std::endl;
- std::cout << "----------------------------------------" << std::endl;
- std::cout << "Total time = " << fTimeTotal << " sec" << std::endl;
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement