最近一直在思考要不要为.net写一个对象池。看了后面的结果,我看是不用了。.net的内存管理实际上已经进入了一次优化。也许就是我们常用的对象池。
先看.net代码:
[TestMethod]
public void TestAllocPakcage()
{
byte[] pkg;
for (int i = 0; i < 50000; i++)
{
pkg = new byte[2048];
pkg[100] = 1;
}
}
测试结果:
再看c++代码:
#include "stdafx.h"
#include "time.h"
class Packet
{
public:
char buffer[2024];
};
int _tmain(int argc, _TCHAR* argv[])
{
Packet* test;
clock_t start,end;
start = clock();
for(int i = 0; i < 50000; i ++)
{
test = new Packet();
for(int j = 0;j < 100; j ++)
{
test->buffer[j] = j;
}
delete test;
}
end = clock();
double duration = (double)(end - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
getchar();
return 0;
}
测试结果:
如果有什么错误,请大家指出。