Skip to content

Instantly share code, notes, and snippets.

@cleak
Last active January 21, 2019 02:37
Show Gist options
  • Save cleak/b7fb2f900ff6d3f5ab09c058724b2b3d to your computer and use it in GitHub Desktop.
Save cleak/b7fb2f900ff6d3f5ab09c058724b2b3d to your computer and use it in GitHub Desktop.
class IncrementerBase {
public:
IncrementerBase() {
my_num = rand();
}
virtual ~IncrementerBase() {}
virtual void Increment() {}
int my_num;
};
class IncrementerVirtual : public IncrementerBase {
public:
IncrementerVirtual() { }
virtual ~IncrementerVirtual() {}
virtual void Increment() override {
g_update_count += my_num;
}
};
class IncrementerDirect : public IncrementerBase {
public:
IncrementerDirect() {}
virtual ~IncrementerDirect() {}
// Preventing inling to force a fair comparison.
__declspec(noinline) void IncrementDirect() {
g_update_count += my_num;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment