类与结构体性能对比测试——以封装网络心跳包为例
目录 1.背景 2.用类来封装以太网心跳包的优缺点 2.1.优点 2.2.缺点 3.网络心跳包封装类 4.实现IDisposable接口 5.应用层调用 6.Dispose()方法生效的测试 7.测试性能对比 8.综上,在C#里,结构体主要作用有如下两点: 1.背景 接上篇文章 深入浅出C#结构体——封装以太网心跳包的结构为例 ,使用结构体性能不佳,而且也说明了原因。本篇文章详细描述了以类来封装网络心跳包的优缺点,结果大大提升了解析性能。 2.用类来封装以太网心跳包的优缺点 2.1.优点 可以在类里直接new byte[],即直接实例字节数组,然后写初始化方法或者构造函数中直接对传进来的缓存进行拷贝赋值; 无需装箱拆箱; 类属于引用类型,无需像结构体进行值拷贝,底层直接就是智能指针; 智能指针指向同一片内存,省内存空间; 可以在类里写很多方便的方法,这也就是面向对象,面向领域的基石,方便以后扩展; 2.2.缺点 存在堆里,读取性能会比栈稍差(现在PC端的计算速度很快,基本可忽略不计); 虽然类也属于GC的托管资源,但是GC什么时候进行自动回收不可控制,需要实现IDisposable接口,用完该类,手动对该类进行释放动作; 使用类的实际性能怎样,我们用测试数据说话,后面会放上与结构体测试的性能对比数据。 3.网络心跳包封装类 这里全部都命名成了字节数组,包括 public byte[