当前位置 : 主页 > 编程语言 > c语言 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-25
我阅读了Cwalina的书(关于.NET应用程序的开发和设计的建议). 他说,一个好的设计结构必须小于16个字节(出于性能目的). 这究竟是为什么? 而且(更重要的是)如果我在Windows 7 x64下运行我的
我阅读了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倍)

网友评论