1
/*
2
(C) OOMusou 2006 http://oomusou.cnblogs.com
3![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
4
Filename : VectorVsList.cpp
5
Compiler : Visual C++ 8.0
6
Description : Demo the performance difference between std::vector and std::list
7
*/
8
#include
<
iostream
>
9
#include
<
ctime
>
10
#include
<
vector
>
11
#include
<
list
>
12![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
13
//
Add to Vector at end
14
void
addToVectorAtEnd();
15
//
Add to List at end
16
void
addToListAtEnd();
17
//
Calculate time for adding to end
18
void
addToEnd();
19![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
20
//
Add to Vector anywhere
21
void
addToVectorAnywhere();
22
//
Add to List anywhere
23
void
addToListAnywhere();
24
//
Calculate time for adding anywhere
25
void
addAnywhere();
26![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
27
//
Remove from Vector anywhere
28
void
removeFromVectorAnywhere();
29
//
Remove from List anywhere
30
void
removeFromListAnywhere();
31
//
Calculate time for removing anywhere
32
void
removeAnywhere();
33![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
34
//
Non-sequential access to Vector
35
void
nonSequentialAccessToVector();
36
//
Non-sequential access to List
37
void
nonSequentialAccessToList();
38
//
Caculate time for non-sequential access to
39
void
nonSequentialAccess();
40![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
41
std::vector
<
int
>
vector1;
42
std::list
<
int
>
list1;
43![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
44
int
main()
{
45
// Calculate time for adding to end
46
addToEnd();
47![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
48
// Calculate time for adding anywhere
49
addAnywhere();
50![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
51
// Calculate time for removing anywhere
52
removeAnywhere();
53![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
54
// Caculate time for non-sequential access to
55
nonSequentialAccess();
56
}
57![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
58
//
Add to Vector at end
59
void
addToVectorAtEnd()
{
60
for(int i=0; i != 1000000; ++i) {
61
vector1.push_back(i);
62
}
63
}
64![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
65
//
Add to List at end
66
void
addToListAtEnd()
{
67
for(int i=0; i != 1000000; ++i) {
68
list1.push_back(i);
69
}
70
}
71![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
72
//
Calculate time for adding to end
73
void
addToEnd()
{
74
clock_t addToVectorAtEndClock = clock();
75
addToVectorAtEnd();
76
addToVectorAtEndClock = clock() - addToVectorAtEndClock;
77![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
78
std::cout << "Vector Insertion at the end Process time:" << (double)addToVectorAtEndClock/CLOCKS_PER_SEC << " sec" << std::endl;
79![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
80
clock_t addToListAtEndClock = clock();
81
addToListAtEnd();
82
addToListAtEndClock = clock() - addToListAtEndClock;
83![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
84
std::cout << "List Insertion at the end Process time:" << (double)addToListAtEndClock/CLOCKS_PER_SEC << " sec" << std::endl;
85![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
86
if (addToVectorAtEndClock < addToListAtEndClock) {
87
std::cout << "Insertion at the end : Vector wins" << std::endl;
88
}
89
else {
90
std::cout << "Insertion at the end : List wins" << std::endl;
91
}
92
}
93![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
94
//
Add to Vector anywhere
95
void
addToVectorAnywhere()
{
96
// Add to 50000th
97
std::vector<int>::iterator iter = vector1.begin();
98![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
99
for(int i = 0; i <= 500; ++i) {
100
++iter;
101
iter = vector1.insert(iter,i);
102
}
103
}
104![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
105
//
Add to List anywhere
106
void
addToListAnywhere()
{
107
// Add to 50000th
108
std::list<int>::iterator iter = list1.begin();
109![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
110
for(int i = 0; i != 500; ++i) {
111
++iter;
112
iter = list1.insert(iter,i);
113
}
114
}
115![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
116
//
Calculate time for adding anywhere
117
void
addAnywhere()
{
118
clock_t addToVectorAnywhereClock = clock();
119
addToVectorAnywhere();
120
addToVectorAnywhereClock = clock() - addToVectorAnywhereClock;
121![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
122
std::cout << "Vector Insertion anywhere Process time:" << (double)addToVectorAnywhereClock/CLOCKS_PER_SEC << " sec" << std::endl;
123![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
124
clock_t addToListAnywhereClock = clock();
125
addToListAnywhere();
126
addToListAnywhereClock = clock() - addToListAnywhereClock;
127![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
128
std::cout << "List Insertion anywhere Process time:" << (double)addToListAnywhereClock/CLOCKS_PER_SEC << " sec" << std::endl;
129![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
130
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
2
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
3
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
4
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
5
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
6
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
7
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
8
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
9
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
10
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
11
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
12
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
13
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
14
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
15
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
16
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
17
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
18
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
19
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
20
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
21
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
22
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
23
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
24
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
25
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
26
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
27
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
28
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
29
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
30
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
31
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
32
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
33
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
34
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
35
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
36
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
37
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
38
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
39
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
40
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
41
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
42
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
43
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
44
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
45
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
46
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
47
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
48
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
49
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
50
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
51
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
52
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
53
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
54
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
55
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
56
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
57
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
58
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
59
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
60
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
61
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
62
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
63
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
64
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
65
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
66
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
67
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
68
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
69
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
70
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
71
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
72
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
73
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
74
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
75
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
76
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
77
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
78
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
79
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
80
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
81
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
82
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
83
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
84
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
85
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
86
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
87
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
88
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
89
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
90
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
91
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
92
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
93
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
94
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
95
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
96
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
97
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
98
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
99
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
100
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
101
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
102
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
103
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
104
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
105
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
106
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
107
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
108
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
109
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
110
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
111
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
112
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
113
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
114
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockEnd.gif)
115
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
116
![](http://writeblog.csdn.net/Images/OutliningIndicators/None.gif)
117
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
118
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
119
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
120
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
121
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
122
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
123
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
124
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
125
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
126
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
127
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
128
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
129
![](http://writeblog.csdn.net/Images/OutliningIndicators/InBlock.gif)
130