2 #include <graphlab/util/timer.hpp>
3 #include <graphlab/util/mpi_tools.hpp>
4 #include <graphlab/util/generics/any.hpp>
5 #include <graphlab/rpc/dc.hpp>
6 #include <graphlab/rpc/dc_init_from_mpi.hpp>
7 #include <graphlab/rpc/dht.hpp>
9 using namespace graphlab;
11 std::string randstring(
size_t len) {
14 const char *charset=
"ab";
15 size_t charsetlen = 64;
16 for (
size_t i = 0;i < len; ++i) {
17 str[i] = charset[
rand() % charsetlen];
22 int main(
int argc,
char ** argv) {
23 mpi_tools::init(argc, argv);
26 std::cout <<
"I am machine id " << dc.
procid()
27 <<
" in " << dc.
numprocs() <<
" machines"<<std::endl;
30 std::vector<std::pair<std::string, std::string> > data;
31 const size_t NUMSTRINGS = 10000;
32 const size_t strlen[4] = {16, 128, 1024, 10240};
34 for (
size_t l = 0; l < 4; ++l) {
37 std::cout <<
"String Length = " << strlen[l] << std::endl;
39 for (
size_t i = 0;i < NUMSTRINGS; ++i) {
40 data.push_back(std::make_pair(randstring(8), randstring(strlen[l])));
42 std::cout <<
"10k random strings generated" << std::endl;
43 std::cout <<
"Starting set" << std::endl;
45 for (
size_t i = 0;i < NUMSTRINGS; ++i) {
46 testdht.set(data[i].first, data[i].second);
47 if (i % 100000 == 0) {
59 std::cout <<
"Starting get" << std::endl;
63 for (
size_t i = 0;i < NUMSTRINGS; ++i) {
64 std::pair<bool, std::string> ret = testdht.get(data[i].first);
71 std::cout <<
"10k reads in " << ti.
current_time() << std::endl;
75 std::cout <<
"Starting background gets" << std::endl;
78 std::vector<request_future<std::pair<bool, std::string> > > futures;
79 futures.resize(NUMSTRINGS);
81 for (
size_t i = 0;i < NUMSTRINGS; ++i) {
82 futures[i] = testdht.get_future(data[i].first);
84 std::cout <<
"gets issued." << std::endl;
85 for (
size_t i = 0;i < NUMSTRINGS; ++i) {
86 std::pair<bool, std::string> ret = futures[i]();
92 std::cout <<
"10k reads in " << ti.
current_time() << std::endl;
98 testdht.print_stats();
99 mpi_tools::finalize();