Impala
Impalaistheopensource,nativeanalyticdatabaseforApacheHadoop.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
name-resolution-benchmark.cc
Go to the documentation of this file.
1 // Copyright 2012 Cloudera Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #include <stdlib.h>
16 #include <stdio.h>
17 #include <iostream>
18 #include "util/cpu-info.h"
19 #include "util/debug-util.h"
20 #include "util/network-util.h"
21 #include "util/stopwatch.h"
22 
23 #include <boost/foreach.hpp>
24 
25 #include <list>
26 #include <boost/assign/list_of.hpp>
27 
28 using namespace boost::assign;
29 
30 using namespace boost;
31 using namespace impala;
32 using namespace std;
33 
34 // Benchmark for thread creation time using the ParallelExecutor. The total time
35 // also includes thread shutdown and object creation overhead.
36 // Time to start up 1 threads: 0
37 // Time to start up 5 threads: 0
38 // Time to start up 50 threads: 0
39 // Time to start up 500 threads: 5ms
40 // Total time: 11ms
41 
42 static list <string> backends = list_of ("e1114.halxg.cloudera.com")
43 ("e1115.halxg.cloudera.com")
44 ("e1116.halxg.cloudera.com")
45 ("e1117.halxg.cloudera.com")
46 ("e1118.halxg.cloudera.com")
47 ("e1119.halxg.cloudera.com")
48 ("e1120.halxg.cloudera.com")
49 ("e1121.halxg.cloudera.com")
50 ("e1201.halxg.cloudera.com")
51 ("e1202.halxg.cloudera.com")
52 ("e1203.halxg.cloudera.com")
53 ("e1204.halxg.cloudera.com")
54 ("e1205.halxg.cloudera.com")
55 ("e1206.halxg.cloudera.com")
56 ("e1207.halxg.cloudera.com")
57 ("e1208.halxg.cloudera.com")
58 ("e1209.halxg.cloudera.com")
59 ("e1210.halxg.cloudera.com")
60 ("e1211.halxg.cloudera.com")
61 ("e1212.halxg.cloudera.com")
62 ("e1213.halxg.cloudera.com")
63 ("e1214.halxg.cloudera.com")
64 ("e1215.halxg.cloudera.com")
65 ("e1216.halxg.cloudera.com")
66 ("e1217.halxg.cloudera.com")
67 ("e1218.halxg.cloudera.com")
68 ("e1219.halxg.cloudera.com")
69 ("e1220.halxg.cloudera.com")
70 ("e1221.halxg.cloudera.com")
71 ("e1301.halxg.cloudera.com")
72 ("e1302.halxg.cloudera.com")
73 ("e1303.halxg.cloudera.com")
74 ("e1304.halxg.cloudera.com")
75 ("e1305.halxg.cloudera.com")
76 ("e1306.halxg.cloudera.com")
77 ("e1307.halxg.cloudera.com")
78 ("e1308.halxg.cloudera.com")
79 ("e1309.halxg.cloudera.com")
80 ("e1310.halxg.cloudera.com")
81 ("e1311.halxg.cloudera.com")
82 ("e1312.halxg.cloudera.com")
83 ("e1313.halxg.cloudera.com")
84 ("e1314.halxg.cloudera.com")
85 ("e1315.halxg.cloudera.com")
86 ("e1316.halxg.cloudera.com")
87 ("e1317.halxg.cloudera.com")
88 ("e1319.halxg.cloudera.com")
89 ("e1320.halxg.cloudera.com")
90 ("e1321.halxg.cloudera.com")
91 ("e1401.halxg.cloudera.com")
92 ("e1402.halxg.cloudera.com")
93 ("e1403.halxg.cloudera.com")
94 ("e1404.halxg.cloudera.com")
95 ("e1405.halxg.cloudera.com")
96 ("e1406.halxg.cloudera.com")
97 ("e1407.halxg.cloudera.com")
98 ("e1408.halxg.cloudera.com")
99 ("e1410.halxg.cloudera.com")
100 ("e1411.halxg.cloudera.com")
101 ("e1412.halxg.cloudera.com")
102 ("e1413.halxg.cloudera.com")
103 ("e1415.halxg.cloudera.com")
104 ("e1417.halxg.cloudera.com")
105 ("e1419.halxg.cloudera.com")
106 ("e1420.halxg.cloudera.com")
107 ("e1421.halxg.cloudera.com")
108 ("e1501.halxg.cloudera.com")
109 ("e1502.halxg.cloudera.com")
110 ("e1503.halxg.cloudera.com")
111 ("e1504.halxg.cloudera.com")
112 ("e1505.halxg.cloudera.com")
113 ("e1506.halxg.cloudera.com")
114 ("e1507.halxg.cloudera.com")
115 ("e1508.halxg.cloudera.com")
116 ("e1509.halxg.cloudera.com")
117 ("e1510.halxg.cloudera.com")
118 ("e1511.halxg.cloudera.com")
119 ("e1512.halxg.cloudera.com")
120 ("e1513.halxg.cloudera.com")
121 ("e1514.halxg.cloudera.com")
122 ("e1515.halxg.cloudera.com")
123 ("e1516.halxg.cloudera.com")
124 ("e1517.halxg.cloudera.com")
125 ("e1518.halxg.cloudera.com")
126 ("e1519.halxg.cloudera.com")
127 ("e1520.halxg.cloudera.com")
128  ("e1521.halxg.cloudera.com");
129 
131 
132 }
133 
134 int main(int argc, char **argv) {
135  google::InitGoogleLogging(argv[0]);
136  CpuInfo::Init();
137 
138  // Measure how long it takes to start up a bunch of threads
139  StopWatch total_time;
140  total_time.Start();
141 
142  BOOST_FOREACH(const string& s, backends) {
143  vector<string> out;
144  HostnameToIpAddrs(s, &out);
145  }
146 
147  total_time.Stop();
148 
149  cout << backends.size() << " lookups done in "
150  << PrettyPrinter::Print(total_time.ElapsedTime(), TCounterType::CPU_TICKS)
151  << " at " << backends.size() * 1000.0 * 1000.0 * 1000.0 / (total_time.ElapsedTime() )
152  << " / s"
153  << endl;
154 
155  return 0;
156 }
uint64_t ElapsedTime() const
Returns time in cpu ticks.
Definition: stopwatch.h:50
static list< string > backends
void TimeNameResolution()
Status HostnameToIpAddrs(const string &name, vector< string > *addresses)
Definition: network-util.cc:53
int main(int argc, char **argv)