Esempio n. 1
0
int main (void)
{
  if (lookup1(2) != 2)
    abort ();

  if (lookup2(2) != 3)
    abort ();

  if (lookup3(2) != 4)
    abort ();

  return 0;
}
Esempio n. 2
0
int main(void) {
    const unsigned int experiments = 50;
    const unsigned int hashDataSetTimes = 1000000;
    const unsigned int hashes = 7;
    TimeMeasurement measurement[hashes][experiments];
    TimeResult results[hashes];

    uint32_t testIP = 0;
    uint32_t testOutput = 0;

    // INITIALIZATION
    results[0].identifier = "MurmurHash3";
    results[1].identifier = "IPHash 1";
    results[2].identifier = "IPHash 2";
    results[3].identifier = "MurmurHash2";
    results[4].identifier = "SpookyHash";
    results[5].identifier = "lookup3";
    results[6].identifier = "SuperFastHash";


    // EXPERIMENTS
    for (unsigned int experiment = 0; experiment < experiments; experiment++) {
        // MURMURHASH3
        measurement[0][experiment].start = std::chrono::system_clock::now();
        for (unsigned int i = 0; i < hashDataSetTimes; i++) {
            for (unsigned int ipc = 0; ipc < 100; ipc++) {
                for (unsigned int octet = 0; octet < 4; octet++) {
                    testIP += octets_dataset[ipc][octet];
                    testIP = testIP << 8;
                }
                MurmurHash3_x86_32(&testIP, 32, 1, &testOutput);  
            }
        }
        measurement[0][experiment].end = std::chrono::system_clock::now();
        measurement[0][experiment].elapsed_seconds 
	    = measurement[0][experiment].end-measurement[0][experiment].start;

        // IPHASH1
        measurement[1][experiment].start = std::chrono::system_clock::now();
        for (unsigned int i = 0; i < hashDataSetTimes; i++) {
            for (unsigned int ipc = 0; ipc < 100; ipc++) {
                hash1
            	( octets_dataset[ipc][0]
            	, octets_dataset[ipc][1]
            	, octets_dataset[ipc][2]
            	, octets_dataset[ipc][3]
            	);  
            }
        }
        measurement[1][experiment].end = std::chrono::system_clock::now();
        measurement[1][experiment].elapsed_seconds 
	    = measurement[1][experiment].end-measurement[1][experiment].start;
        
        // IPHASH2
        measurement[2][experiment].start = std::chrono::system_clock::now();
        for (unsigned int i = 0; i < hashDataSetTimes; i++) {
            for (unsigned int ipc = 0; ipc < 100; ipc++) {
                hash2
            	( octets_dataset[ipc][0]
            	, octets_dataset[ipc][1]
            	, octets_dataset[ipc][2]
            	, octets_dataset[ipc][3]
            	);  
            }
        }
        measurement[2][experiment].end = std::chrono::system_clock::now();
        measurement[2][experiment].elapsed_seconds 
	    = measurement[2][experiment].end-measurement[2][experiment].start;

        // MURMURHASH2
        measurement[3][experiment].start = std::chrono::system_clock::now();
        for (unsigned int i = 0; i < hashDataSetTimes; i++) {
            for (unsigned int ipc = 0; ipc < 100; ipc++) {
                for (unsigned int octet = 0; octet < 4; octet++) {
                    testIP += octets_dataset[ipc][octet];
                    testIP = testIP << 8;
                }
                MurmurHash2(&testIP, 32, 1);  
            }
        }
        measurement[3][experiment].end = std::chrono::system_clock::now();
        measurement[3][experiment].elapsed_seconds 
	    = measurement[3][experiment].end-measurement[3][experiment].start;
	
        // SPOOKYHASH
        measurement[4][experiment].start = std::chrono::system_clock::now();
        for (unsigned int i = 0; i < hashDataSetTimes; i++) {
            for (unsigned int ipc = 0; ipc < 100; ipc++) {
                for (unsigned int octet = 0; octet < 4; octet++) {
                    testIP += octets_dataset[ipc][octet];
                    testIP = testIP << 8;
                }
		SpookyHash::Hash32(&testIP, 32, 1);  
            }
        }
        measurement[4][experiment].end = std::chrono::system_clock::now();
        measurement[4][experiment].elapsed_seconds 
	    = measurement[4][experiment].end-measurement[4][experiment].start;
	
        // lookup3
        measurement[5][experiment].start = std::chrono::system_clock::now();
        for (unsigned int i = 0; i < hashDataSetTimes; i++) {
            for (unsigned int ipc = 0; ipc < 100; ipc++) {
                for (unsigned int octet = 0; octet < 4; octet++) {
                    testIP += octets_dataset[ipc][octet];
                    testIP = testIP << 8;
                }
    		lookup3(&testIP, 32, 1);
            }
        }
        measurement[5][experiment].end = std::chrono::system_clock::now();
        measurement[5][experiment].elapsed_seconds 
	    = measurement[5][experiment].end-measurement[5][experiment].start;
	
        // SuperFastHash
        measurement[6][experiment].start = std::chrono::system_clock::now();
        for (unsigned int i = 0; i < hashDataSetTimes; i++) {
            for (unsigned int ipc = 0; ipc < 100; ipc++) {
                for (unsigned int octet = 0; octet < 4; octet++) {
                    testIP += octets_dataset[ipc][octet];
                    testIP = testIP << 8;
                }
    		SuperFastHash(&testIP, 32, 1, &testOutput);
            }
        }
        measurement[6][experiment].end = std::chrono::system_clock::now();
        measurement[6][experiment].elapsed_seconds 
	    = measurement[6][experiment].end-measurement[6][experiment].start;
    }

    for (unsigned int hash = 0; hash < hashes; hash++) {
        for (unsigned int experiment = 0; experiment < experiments; experiment++) {
	   results[hash].elapsed_avg_seconds += measurement[hash][experiment].elapsed_seconds.count();
        }
	   results[hash].elapsed_avg_seconds /= experiments;
    }

    for (unsigned int mes = 0; mes < hashes; mes++) {
        printMeasurementResults(&results[mes]);
    }

    return 0;
}