为什么C语言中16字节的数据类型如此重要?

2026-04-29 05:272阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计456个文字,预计阅读时间需要2分钟。

为什么C语言中16字节的数据类型如此重要?

我阅读了Cwalina的书籍(关于.NET应用程序的开发和设计的建议)。他说,一个好的设计结构必须小于16个字节(出于性能目的)。这究竟为什么呢?而且更重要的是(更重要的可能是)如果我在Windows 7 x64下运行我的“

我阅读了Cwalina的书(关于.NET应用程序的开发和设计的建议).

为什么C语言中16字节的数据类型如此重要?

他说,一个好的设计结构必须小于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倍)

本文共计456个文字,预计阅读时间需要2分钟。

为什么C语言中16字节的数据类型如此重要?

我阅读了Cwalina的书籍(关于.NET应用程序的开发和设计的建议)。他说,一个好的设计结构必须小于16个字节(出于性能目的)。这究竟为什么呢?而且更重要的是(更重要的可能是)如果我在Windows 7 x64下运行我的“

我阅读了Cwalina的书(关于.NET应用程序的开发和设计的建议).

为什么C语言中16字节的数据类型如此重要?

他说,一个好的设计结构必须小于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倍)