加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么16字节是C#中struct的推荐大小?

发布时间:2020-12-16 01:21:55 所属栏目:百科 来源:网络整理
导读:我阅读了Cwalina的书(关于.NET应用程序的开发和设计的建议). 他说,一个好的设计结构必须小于16个字节(出于性能目的). 这究竟是为什么? 而且(更重要的是)如果我在Windows 7 x64下运行我的.NET 3.5(即将成为.NET 4.0)64位应用程序(这是基于CPU / OS的限制),我
我阅读了Cwalina的书(关于.NET应用程序的开发和设计的建议).

他说,一个好的设计结构必须小于16个字节(出于性能目的).

这究竟是为什么?

而且(更重要的是)如果我在Windows 7 x64下运行我的.NET 3.5(即将成为.NET 4.0)64位应用程序(这是基于CPU / OS的限制),我可以拥有更高效率的结构吗?

只是再次强调 – 我需要尽可能高效的结构.我试着一直把它放在堆栈上.该应用程序是多线程的,并且以亚毫秒为间隔运行,结构的当前大小为64字节.

解决方法

只有您知道结构在程序中的使用方式.但如果没有别的,你可以随时测试它.例如,如果它经常传递给其他功能,以下可能会照亮您:

class MainClass
{
    static void Main()
    {
        Struct64 s1 = new Struct64();
        Class64 c1 = new Class64();
        DoStuff(s1);
        DoStuff(c1);
        Stopwatch sw = new Stopwatch();
        sw.Start();
        for (int i = 0; i < 10000; i++)
        {
            s1 = DoStuff(s1);
        }
        sw.Stop();
        Console.WriteLine("Struct {0}",sw.ElapsedTicks);
        sw.Reset();

        sw.Start();
        for (int i = 0; i < 10000; i++)
        {
            c1 = DoStuff(c1);
        }
        sw.Stop();
        Console.WriteLine("Class {0}",sw.ElapsedTicks);
        sw.Reset();

        Console.ReadLine();
    }
}

有:

public class Class64
{
    public long l1;
    public long l2;
    public long l3;
    public long l4;
    public long l5;
    public long l6;
    public long l7;
    public long l8;
}
public struct Struct64
{
    public long l1;
    public long l2;
    public long l3;
    public long l4;
    public long l5;
    public long l6;
    public long l7;
    public long l8;
}

尝试使用代表性结构/类的这种东西,看看你得到了什么结果. (在我的机器上,上面的测试,这个类似乎快3倍)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读