引用计数比指针还快!哪位高手能告诉小弟我为什么

引用计数比指针还快!谁能告诉我为什么?
最近做个小东西,大量用到引用计数,然后自己写了一个引用计数类和时间类,测试一下引用计数的效率问题,测试结果我自己被整蒙了,下面我写的一小段代码,


#include "stdafx.h"
#include "TimeElapser.h"
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <conio.h>
#include "sharedptr.h"
using namespace std;
class point2d
{
public:
int x;
int y;
};
int _tmain(int argc, _TCHAR* argv[])
{
long i = 100000000L;
point2d* pPoint=new point2d();
sharedptr<point2d> RCpoint(pPoint);
TimeElapser Mtime;

Mtime.SetStart();
while(i--)
{//说明用RCpoint速度还快,不知道为什么,
//(RCpoint->x=i);///////1
//(RCpoint->y=i);///////1
//(pPoint->x=i);////////2
//(pPoint->y=i);////////2
}
Mtime.Setfinish();
cout<<Mtime.getElapse()<<endl;
_getch();
return 0;
}
首先运行:
  (RCpoint->x=i);///////1
  (RCpoint->y=i);///////1
把下面注释掉:
//(pPoint->x=i);////////2
//(pPoint->y=i);////////2
运行时间为0.092ms
然后把下面注释
  (RCpoint->x=i);///////1
  (RCpoint->y=i);///////1
运行:
  (pPoint->x=i);////////2
  (pPoint->y=i);////////2
运行时间为0.261ms
所以结论为引用计数比指针还快!,不知道为什么!引用计数类,采用通常方法,自己写了一个。有哪个大侠给我说说为什么,采用引用计数的赋值速度还快呢?!

------解决方案--------------------
使用电脑计时有时误差会很大,因为待测程序段的运行会影响电脑时钟。
将待测程序段循环足够多次,手动掐秒表计时可能更准确。