Esempio n. 1
0
TEST(ch3, timing) {
  unsigned i;
  struct timeval lstart, lend;
  uint64_t start, end;
  std::vector<char> keys((MAX_KEY_LENGTH + 1) * NUM_LOOKUPS);
  char* keys_itr;

  printf("Servers:\t\t%d\n", NUM_SERVERS);
  printf("Lookups:\t\t%d\n", NUM_LOOKUPS);

  printf("Generating lookup keys...");
  fflush(stdout);

  srand(time(nullptr));
  for (i = 0, keys_itr = keys.data(); i < NUM_LOOKUPS;
       ++i, keys_itr += MAX_KEY_LENGTH + 1) {
    make_random_key(keys_itr, MAX_KEY_LENGTH);
  }
  printf(" done\n");

  printf("Starting INconsistent hashing timing tests...");
  fflush(stdout);

  gettimeofday(&lstart, nullptr);
  for (i = 0, keys_itr = keys.data(); i < NUM_LOOKUPS;
       ++i, keys_itr += MAX_KEY_LENGTH + 1) {
    uint32_t hash_code = crc32_hash(keys_itr, strlen(keys_itr));
    uint32_t server_num = inconsistent_hashing_lookup(hash_code, NUM_SERVERS);

    (void)server_num; /* to avoid compiler warning */
  }
  gettimeofday(&lend, nullptr);
  printf(" done\n");

  start = ((uint64_t)lstart.tv_sec) * 1000000 + lstart.tv_usec;
  end = ((uint64_t)lend.tv_sec) * 1000000 + lend.tv_usec;
  printf(
      "Lookup:\t\t\t%zdus total\t%0.3fus/query\n",
      (end - start),
      ((float)(end - start)) / NUM_LOOKUPS);

  printf("Starting consistent hashing timing tests...");
  fflush(stdout);

  gettimeofday(&lstart, nullptr);
  for (i = 0, keys_itr = keys.data(); i < NUM_LOOKUPS;
       ++i, keys_itr += MAX_KEY_LENGTH + 1) {
    auto res = furc_hash(keys_itr, strlen(keys_itr), NUM_SERVERS);
    EXPECT_LT(res, NUM_SERVERS);
  }
  gettimeofday(&lend, nullptr);
  printf(" done\n");

  start = ((uint64_t)lstart.tv_sec) * 1000000 + lstart.tv_usec;
  end = ((uint64_t)lend.tv_sec) * 1000000 + lend.tv_usec;
  printf(
      "Lookup:\t\t\t%zdus total\t%0.3fus/query\n",
      (end - start),
      ((float)(end - start)) / NUM_LOOKUPS);
}
Esempio n. 2
0
unsigned int digested_rule(unsigned int* m, gzFile f)
{
	int i;
	uint32_t digest = 0;
	uint32_t key;
	for(i=0;i<6;i++)
	{
		key = m[i];
		digest += crc32_hash(key);
	}

	gzprintf(f, "%08x\n", digest);

	return 0;
}
Esempio n. 3
0
int TCPSockClient::do_register(void)
{
	int push_id = PUSH_BEGIN + m_index;

	std::stringstream sstream;
	sstream << push_id;
	std::string server_id;
	sstream >> server_id;

	unsigned source = crc32_hash((const unsigned char*) server_id.c_str(),
			server_id.length());
	VncDataPackage package;
	package.setSourceAndTarget(source, SERVER_ID);
	package.setCommandId(0x00010004, 0);

	package.setStringParam(server_id);
	std::string returnbuf = package.getProtocolBuffer();
	writeMsg(this->m_sockfd, (char *) returnbuf.c_str(),
			returnbuf.length());
	return 0;
}
Esempio n. 4
0
inline Crc32 crc32_hash(const std::string &str){
	return crc32_hash(str.data(), str.size());
}
Esempio n. 5
0
inline Crc32 crc32_hash(const char *str){
	return crc32_hash(str, std::strlen(str));
}