以下のコード例では、ポインタ - num_ptr によるメソッド "increment" の実行速度は、ローカル変数 - num よりも大幅に遅くなります。仮想方式が関係していると思うのですが、理由がわかりません。これを説明してください。この例からパフォーマンスの問題を理解しようとしています。
#include <iostream>
const long long iterations_count = 1000000;
// a number interface
struct number {
virtual void increment() = 0;
};
struct concrete_number:number
{
long long a;
concrete_number(long long p){
a = p;
}
void increment()
{
a+=1;
}
};
int main() {
concrete_number num(0);
concrete_number* num_ptr = #
for (long long i = 0; i < iterations_count; i++) {
num.increment();
}
for (long long i = 0; i < iterations_count; i++) {
num_ptr->increment();
}
std::getchar();
}