⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 使用c语言实现的内存池,并且进行了封装,与stl配合使用,测试效率
💻 CPP
字号:
#include "pool_allocator.h"
#include "ss_allocator.h"
#include <vector>
#include <iostream>
#include <algorithm>
#include "timer.h"
#include <string>
#include <ctime>
using namespace std;

const int size = 10000;

struct foo
{
    foo(const string &s = "Hello world", int i = 0):s_(s), i_(i){}
    string s_;
    int i_;
    bool operator <(const foo& other)const{return i_<other.i_;}
};

foo generator()
{
    return foo("Hello world", rand());
}



int main() 
{
    timer t;
    srand(time(0));
    cout.precision(10); 
    cout<<"***Tests with <vector>***"<<endl;
    t.elapsed();
    vector<foo, pool_allocator<foo> > pool_vector(size);
    cout<<"Construction (pool_allocator):"<<t.elapsed()<<endl;
    vector<foo, ss_allocator<foo> > ss_vector(size);
    cout<<"Construction (ss_allocator):"<<t.elapsed()<<endl;
    vector<foo> default_vector(size);
    cout<<"Construction (default allocator):"<<t.elapsed()<<endl;
    generate(pool_vector.begin(), pool_vector.end(), generator);
    copy(pool_vector.begin(), pool_vector.end(), default_vector.begin());
    copy(pool_vector.begin(), pool_vector.end(), ss_vector.begin());

    t.elapsed();
    sort(pool_vector.begin(), pool_vector.end());
    cout<<"Sort (pool_allocator):"<<t.elapsed()<<endl;
    sort(ss_vector.begin(), ss_vector.end());
    cout<<"Sort (ss_allocator):"<<t.elapsed()<<endl;
    sort(default_vector.begin(), default_vector.end());
    cout<<"Sort (default allocator):"<<t.elapsed()<<endl;


    cout<<"***Tests with <list>***"<<endl;
    t.elapsed();
    list<foo, pool_allocator<foo> > pool_list(size);
    cout<<"Construction (pool_allocator):"<<t.elapsed()<<endl;
    list<foo, ss_allocator<foo> > ss_list(size);
    cout<<"Construction (ss_allocator):"<<t.elapsed()<<endl;
    list<foo> default_list(size);
    cout<<"Construction (default allocator):"<<t.elapsed()<<endl;
    generate(pool_list.begin(), pool_list.end(), generator);
    copy(pool_list.begin(), pool_list.end(), default_list.begin());
    copy(pool_list.begin(), pool_list.end(), ss_list.begin());
    t.elapsed();
    pool_list.sort();
    cout<<"Sort (pool_allocator):"<<t.elapsed()<<endl;
    ss_list.sort();
    cout<<"Sort (ss_allocator):"<<t.elapsed()<<endl;
    default_list.sort();
    cout<<"Sort (default allocator):"<<t.elapsed()<<endl;
    cout<<"Press <Enter>..."<<endl;
    char c;
    cin.getline(&c, 1);
    return 0;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -