#include <iostream>
#include <vector>
#include <string>
#include <stdint.h>
#include <random>
#include <time.h>
#include <string.h>
#include <chrono>
using namespace std;
uint64_t itr = 1000000;//10 Billion
int len = 100;
class Timer {
std::chrono::steady_clock::time_point start;
std::chrono::steady_clock::time_point stop;
public:
Timer(){
start = std::chrono::steady_clock::now();
stop = std::chrono::steady_clock::now();
}
virtual ~Timer() {}
inline void begin() {
start = std::chrono::steady_clock::now();
}
inline void end() {
stop = std::chrono::steady_clock::now();
}
inline double elapsedMillis() {
return std::chrono::duration_cast<std::chrono::milliseconds>(stop - start).count();
}
inline double elapsedMicro() {
return std::chrono::duration_cast<std::chrono::microseconds>(stop - start).count();
}
inline double elapsedNano() {
return std::chrono::duration_cast<std::chrono::nanoseconds>(stop - start).count();
}
inline double elapsedSec() {
auto diff = stop - start;
return std::chrono::duration<double> (diff).count();
}
};
int main(int argc) {
string s[] = { {len,argc+'A'}, {len,argc+'A'}, {len, argc+'B'}, {len, argc+'B'} };
std::cout << "s[0] " << s[0] << '\n';
uint64_t a = 0;
Timer t;
for (int x = 0; x < 2; ++x)
{
t.begin();
for(uint64_t i =0;i<itr;i++){
if(s[i&3] == s[(i+1)&3])
a += i;
}
t.end();
cout<<"== took:"<<t.elapsedMillis()<<endl;
t.begin();
for(uint64_t i =0;i<itr;i++){
if(s[i&3].compare(s[(i+1)&3])==0)
a += i;
}
t.end();
cout<<".compare took:"<<t.elapsedMillis()<<endl;
t.begin();
for(uint64_t i =0;i<itr;i++){
if(strcmp(s[i&3].c_str(),s[(i+1)&3].c_str()))
a += i;
}
t.end();
cout<<"strcmp took:"<<t.elapsedMillis()<<endl;
}
if (a == 42) std::cout << "huh?\n";
}