在SO和互联网上的大多数答案都是“为什么应该struct small size”是指性能,但没有一个解释为什么为。任何人都可以点亮它吗?为什么小型结构可以提高大型结构的性能?
回答
Struct是一个值类型,当它被传递给函数时 - 它被复制。所以如果结构体大小为512位 - 所有512位将被复制。如果你通过参考类型 - 只有32/64位参考这512位将被复制。从MSDN
接下来,引用类型赋值复制引用,而值类型赋值复制整个值。因此,大参考类型的分配比大值类型的分配便宜。
对不起,在这里分割头发:除非你明确地通过引用传递,否则一切都通过C#中的值传递。当你传递一个引用类型时,引用本身被复制。这与C#中的引用传递不同。 –
@BrianRasmussen,同意,添加更多的细节来回答 – 4ybaka
@BrianRasmussen引用谈论有关任务,而不是论证传递。 –
- 1. 为什么结构可以存储自己的大小?
- 2. 可以构建什么类型结构的绑定工作,
- 3. 结构内结构,能够改变内部结构类型
- 4. 结构的大小
- 5. 古典结构与原型结构相比有什么好处?
- 6. 将大型IIAF分割为更小的函数是否可以提高性能?
- 7. scipy.io.loadmat为大型matlab结构返回MemoryError
- 8. 结构型
- 9. 结构泛型
- 10. 无法将Weblogic结构类型转换为Oracle结构类型
- 11. 为什么更大的结构更慢?
- 12. 为什么添加一个额外的字段结构大大提高了它的性能?
- 13. 值类型数据结构不能接受为什么
- 14. 什么是REBOL结构!数据类型?
- 15. 如何声明内部有大型结构数组的结构
- 16. 为什么在替换旧库时不能减小结构的大小?
- 17. 小型图书馆的目录结构
- 18. 为什么结构类型被定义为自己的名字?
- 19. Rails模型结构
- 20. 可变大小的数组结构
- 21. 结构功能,可以让任何类型的
- 22. 为什么这个结构体12的大小不是10?
- 23. 为什么bind()和accept()让你指定结构的大小?
- 24. 为什么这两个结构的大小不同?
- 25. 一个大中型项目的结构
- 26. 保存大型结构的内容
- 27. 结构成员的大小
- 28. 结构C的大小#
- 29. C++:结构的大小?
- 30. 给定结构的大小
因为它是一个valuetype,并且在传递给方法或从方法返回或赋值时复制该值。 – leppie
@leppie那么它的内存拷贝更少? –