Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C整型变量的性能_C#_Performance_Integer_Generic List - Fatal编程技术网

C# C整型变量的性能

C# C整型变量的性能,c#,performance,integer,generic-list,C#,Performance,Integer,Generic List,我已经知道,建议在for循环中使用int变量只是对性能的一种好奇,建议使用int C以外的其他积分类型,以及何时使用 这个问题的真正目的是我必须创建一个T类型的通用列表,其中T是一个包含string和integer类型字段的结构。因此,我认为优化结构将对整个列表的优化产生直接影响 我怀疑我的名单会很长 谢谢通常的过早优化警告适用于此答案。我假设您确实需要最大的性能 使用最小可行类型优化类和结构的大小是一种有效的优化。在您的例子中,您不会得到任何东西,因为两个结构字符串int和string byt

我已经知道,建议在for循环中使用int变量只是对性能的一种好奇,建议使用int C以外的其他积分类型,以及何时使用

这个问题的真正目的是我必须创建一个T类型的通用列表,其中T是一个包含string和integer类型字段的结构。因此,我认为优化结构将对整个列表的优化产生直接影响

我怀疑我的名单会很长


谢谢

通常的过早优化警告适用于此答案。我假设您确实需要最大的性能

使用最小可行类型优化类和结构的大小是一种有效的优化。在您的例子中,您不会得到任何东西,因为两个结构字符串int和string byte由于填充而具有相同的大小

但总的来说,这种技术是有效的。您可以节省内存使用量,并获得引用的局部性、缓存使用量和减少的内存带宽


将循环计数器变量更改为较小的类型不会带来任何好处,因为对小于int的整数执行的任何操作都会扩大到int。

可能是因为我必须对性能问题不太敏感


我只是回顾一下我的需求,发现改变类型可以将我的存储空间最大为24*N*位,其中N是列表的长度N~10K~240kbits,这没什么大不了的

那么整数值代表什么呢?首先,你的结构确实适合作为一个结构吗?整数所代表的内容与答案没有联系:有些整数可以省略为ushort类型,而有些整数可以省略为byte类型。我只是想知道,如果不给它们相同的长度,32位是否会影响性能这是在浪费你的开发时间。保持结构未优化,如果您有可测量的性能问题,请返回。@Oumdaa:不,变量的含义绝对会改变您应该使用的类型-因为在几乎所有情况下,您都应该关注最清晰的类型来表示所涉及的数据。衡量业绩,看看是否足够好。正如我所说,我的名单会很长。请您详细解释一下字符串、int和字符串、byte的结构是如何具有相同大小的?CLR上打包了@Oumdaa structs。根据您是以32位还是64位运行,结构的数据大小将向上舍入到最接近的4或8的倍数。因此,如果您将数据大小从12减少到9,那么结构大小仍然是12;也许我必须对性能方面的事情不那么敏感,我只是回顾一下我的需求,然后告诉你,更改类型会将我保存为最大24*N*位,其中N是列表的长度N~1K~24kbits,这没什么大不了的!