This commit is contained in:
邹晓航
2014-10-22 18:29:35 +08:00

View File

@@ -1,6 +1,6 @@
TinySTL TinySTL
======= =======
采用C++11实现一款简易的STL标准库既是C++STL的一个子集又是一个超集 采用C++11实现一款简易的STL标准库既是C++STL的一个子集(裁剪了一些容器和算法)又是一个超集(增加了一些容器和算法)
目的练习数据结构与算法和C++ Template编程 目的练习数据结构与算法和C++ Template编程
@@ -75,24 +75,34 @@ TinySTL
ProfilerInstance::finish(); ProfilerInstance::finish();
ProfilerInstance::dumpDuringTime(); ProfilerInstance::dumpDuringTime();
######i = 100000 -> (TinySTL::vector<int>2ms \\ std::vector<int>6ms) |container|quantity|time(ms)|
######i = 1000000 -> (TinySTL::vector<int>11ms \\ std::vector<int>16ms) |---------|--------|--------|
######i = 10000000 -> (TinySTL::vector<int>129ms \\ std::vector<int>210ms) |TinySTL::vector<int>|10万|2|
|TinySTL::vector<int>|100万|11|
|TinySTL::vector<int>|1000万|129|
|std::vector<int>|10万|6|
|std::vector<int>|100万|16|
|std::vector<int>|1000万|210|
####(2):vector<string> ####(2):vector<string>
//std::vector<std::string> vec; //std::vector<std::string> vec;
TinySTL::vector<std::string> vec; TinySTL::vector<std::string> vec;
ProfilerInstance::start(); ProfilerInstance::start();
int i = 0; int i = 0;
for (; i != 10000; ++i){ for (; i != 100000; ++i){
vec.push_back(std::string("zouxiaohang")); vec.push_back(std::string("zouxiaohang"));
} }
ProfilerInstance::finish(); ProfilerInstance::finish();
ProfilerInstance::dumpDuringTime(); ProfilerInstance::dumpDuringTime();
######i = 100000 -> (TinySTL::vector&lt;string>18ms \\ std::vector&lt;string>29ms) |container|quantity|time(ms)|
######i = 1000000 -> (TinySTL::vector&lt;string>181ms \\ std::vector&lt;string>232ms) |---------|--------|--------|
######i = 10000000 -> (TinySTL::vector&lt;string>2372ms \\ std::vector&lt;string>1972ms) |TinySTL::vector&lt;string>|10万|18|
|TinySTL::vector&lt;string>|100万|181|
|TinySTL::vector&lt;string>|1000万|2372|
|std::vector&lt;string>|10万|29|
|std::vector&lt;string>|100万|232|
|std::vector&lt;string>|1000万|1972|
####(3):circular_buffer&lt;int, N> ####(3):circular_buffer&lt;int, N>
TinySTL::circular_buffer<int, 10000> cb(10000, 0); TinySTL::circular_buffer<int, 10000> cb(10000, 0);
@@ -104,9 +114,14 @@ TinySTL
ProfilerInstance::finish(); ProfilerInstance::finish();
ProfilerInstance::dumpDuringTime(); ProfilerInstance::dumpDuringTime();
######i = 10000000 -> (TinySTL::circular_buffer75ms \\ boost::circular_buffer22ms) |container|quantity|time(ms)|
######i = 100000000 -> (TinySTL::circular_buffer604ms \\ boost::circular_buffer252ms) |---------|--------|--------|
######i = 1000000000 -> (TinySTL::circular_buffer5936ms \\ boost::circular_buffer2241ms) |TinySTL::circular_buffer|1000万|75|
|TinySTL::circular_buffer|10000万|604|
|TinySTL::circular_buffer|100000万|5936|
|boost::circular_buffer|1000万|22|
|boost::circular_buffer|10000万|252|
|boost::circular_buffer|100000万|2241|
####(4):题目利用bitmap找出str中未出现的字母 ####(4):题目利用bitmap找出str中未出现的字母
std::string str("abcdefghijklmnpqrstuvwxyz"); std::string str("abcdefghijklmnpqrstuvwxyz");
@@ -138,9 +153,14 @@ TinySTL
ProfilerInstance::finish(); ProfilerInstance::finish();
ProfilerInstance::dumpDuringTime(); ProfilerInstance::dumpDuringTime();
######i = 1000000 -> (TinySTL::string7ms \\ std::string37ms) |container|quantity|time(ms)|
######i = 10000000 -> (TinySTL::string39ms \\ std::string229ms) |---------|--------|--------|
######i = 100000000 -> (TinySTL::string484ms \\ std::string1965ms) |TinySTL::string|100万|7|
|TinySTL::string|1000万|39|
|TinySTL::string|10000万|484|
|std::string|100万|37|
|std::string|1000万|229|
|std::string|10000万|1965|
####(6):priority_queue&lt;int> ####(6):priority_queue&lt;int>
@@ -154,9 +174,14 @@ TinySTL
ProfilerInstance::finish(); ProfilerInstance::finish();
ProfilerInstance::dumpDuringTime(); ProfilerInstance::dumpDuringTime();
######i = 100000 -> (TinySTL::priority_queue&lt;int>13ms \\ std::priority_queue&lt;int>12ms) |container|quantity|time(ms)|
######i = 1000000 -> (TinySTL::priority_queue&lt;int>97ms \\ std::priority_queue&lt;int>67ms) |---------|--------|--------|
######i = 10000000 -> (TinySTL::priority_queue&lt;int>1032ms \\ std::priority_queue&lt;int>752ms) |TinySTL::priority_queue&lt;int>|10万|13|
|TinySTL::priority_queue&lt;int>|100万|97|
|TinySTL::priority_queue&lt;int>|1000万|1032|
|std::priority_queue&lt;int>|10万|12|
|std::priority_queue&lt;int>|100万|67|
|std::priority_queue&lt;int>|1000万|752|
TinySTL::vector<int> v; TinySTL::vector<int> v;
int i = 0; int i = 0;
@@ -172,9 +197,14 @@ TinySTL
ProfilerInstance::finish(); ProfilerInstance::finish();
ProfilerInstance::dumpDuringTime(); ProfilerInstance::dumpDuringTime();
######i = 100000 -> (TinySTL::priority_queue&lt;int>19ms \\ std::priority_queue&lt;int>7ms) |container|quantity|time(ms)|
######i = 1000000 -> (TinySTL::priority_queue&lt;int>137ms \\ std::priority_queue&lt;int>92ms) |---------|--------|--------|
######i = 10000000 -> (TinySTL::priority_queue&lt;int>1532ms \\ std::priority_queue&lt;int>1214ms) |TinySTL::priority_queue&lt;int>|10万|19|
|TinySTL::priority_queue&lt;int>|100万|137|
|TinySTL::priority_queue&lt;int>|1000万|1532|
|std::priority_queue&lt;int>|10万|7|
|std::priority_queue&lt;int>|100万|92|
|std::priority_queue&lt;int>|1000万|1214|
####(7):binary_search_tree&lt;int> ####(7):binary_search_tree&lt;int>
@@ -190,8 +220,11 @@ TinySTL
ProfilerInstance::finish(); ProfilerInstance::finish();
ProfilerInstance::dumpDuringTime(); ProfilerInstance::dumpDuringTime();
######i = 10000 -> TinySTL::binary_search_tree&lt;int>5ms |container|quantity|time(ms)|
######i = 100000 -> TinySTL::binary_search_tree&lt;int>64ms |---------|--------|--------|
######i = 1000000 -> TinySTL::binary_search_tree&lt;int>828ms |TinySTL::binary_search_tree&lt;int>|1万|5|
|TinySTL::binary_search_tree&lt;int>|10万|64|
|TinySTL::binary_search_tree&lt;int>|100万|828|
#######注:真实的插入时间 = 总的插入时间 - C++11随机数生成器生成随机数的总的时间 #######注:真实的插入时间 = 总的插入时间 - C++11随机数生成器生成随机数的总的时间