#include #include #include #include #include using namespace std; #define LOOPS 5000000 #ifndef __GNUC__ typedef __int64 LONGLONG; #else typedef long long LONGLONG; #endif // __GNUC__ union mstring { char name[8]; LONGLONG index; mstring(const char* str) { strncpy(name, str, 8); } }; bool less::operator()(const mstring& x, const mstring& y) const { return x.index < y.index; } int main() { map ii; map csi; map msi; map sti; int i, r; clock_t t; ii[1] = 1; csi["From"] = 1; msi["From"] = 1; sti["From"] = 1; t = clock(); for (i = 0; i < LOOPS; i++) r = ii[1]; cout << "int: " << clock() - t << " clocks" << endl; t = clock(); for (i = 0; i < LOOPS; i++) r = csi["From"]; cout << "const char*: " << clock() - t << " clocks" << endl; t = clock(); for (i = 0; i < LOOPS; i++) r = msi["From"]; cout << "mstring: " << clock() - t << " clocks" << endl; t = clock(); for (i = 0; i < LOOPS; i++) r = sti["From"]; cout << "std::string: " << clock() - t << " clocks" << endl; return 0; }