首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >数据是否更密集地被值类型或引用类型的数组填充?

数据是否更密集地被值类型或引用类型的数组填充?
EN

Stack Overflow用户
提问于 2014-10-30 14:14:06
回答 2查看 143关注 0票数 1

在C#中,当使用值类型数组或引用类型数组时,数据将更加密集地打包在一起吗?

我的推理是,一个结构数组将所有数据放在一起,现在,虽然引用类型(所有引用都在一起)也是一样的,但是它们可以指向整个地方。

(我意识到,只要有可能,就鼓励使用C#的集合接口,而且可读的代码胜过过早的优化,但我只是好奇它是如何工作的。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-30 14:31:45

这取决于你如何定义密集的包装。是的,引用将无处不在,但您也应该考虑分配数组所需的内存大小。

一个引用数组将需要一个较小的连续内存块,然后是一个大型结构数组。结构将以内联方式存储,因此每个数组元素将彼此之间的距离更远。对于引用,每个数组元素本质上都是指向引用的指针,因此每个元素都更小,因此元素更接近于一起。

要考虑的另一个问题是数组需要一个连续的内存块。如果在大型对象堆上分配碎片是一个问题,因为GC没有对其进行压缩,那么对于大型数组来说,您更有可能摆脱内存异常。即使您有足够的空闲内存,由于碎片,您可能没有足够的空闲连续内存。一个大型结构的数组比一个引用数组需要更多的连续内存。

这并不是真正直接适用的,而是在考虑数组的内存需求时需要考虑的其他问题。对于具有容量属性的基础类型使用数组的集合,通常通过分配一个比前一个数组大一倍的新数组并将元素复制到新数组来增长集合。这意味着,如果您有一个256项的集合并添加了一个257项,则会分配一个新的512元素数组,并将这些项复制到其中。256项数组将被解除分配,但是在复制过程中,集合需要768项的内存(但不是连续的,256数组+ 512数组)。因此,您可以有足够的空闲内存用于512项,但不能满足700项,因此,如果您试图添加257项,那么在内存不足的情况下,扩展集合就会失败。因此,有时,增加一个集合需要占用的内存是目前的3倍。这与连续内存需求相结合,当你似乎有足够的内存时,你就可以得到内存异常。

票数 2
EN

Stack Overflow用户

发布于 2014-10-30 14:28:57

如果你说的是处理器实际上会咀嚼的数据,那么是的,结构更“密集”(即。它不是需要取消引用的内存地址)。

但是,您需要更清楚地了解您想要实现的目标--听起来您正在尝试优化一些东西,将一个类数组更改为一个结构数组并不一定会更快。这将取决于您的数据是什么,以及如何使用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26664264

复制
相关文章
Excel公式练习42: 统计句子中满足条件的单词个数
导语:继续研究来自于excelxor.com的案例。这个案例应用了前面分享的一些公式技巧,值得反复学习。
fanjy
2020/02/26
1.5K0
求数组满足条件个数
System.out.println("数组中大于50的有"+max+"个,小于50的有"+min+"个");
算法与编程之美
2023/01/03
3680
求数组满足条件个数
网站建设需要满足的条件
如今,网站建设随处可见。它根据现代人已经越来越离不开网络,为大家提供无线的便利。为了让人们感到更加方便,最近的移动网站正如火如荼地进行着,很多企业都察觉到了这样的趋势,所以都在努力拓展这方面的服务。但是想要做得好,就不是每个人都能做到的了。那么优秀的手机网站建设应该要满足哪些条件呢?
我的昵称_
2018/07/13
2.2K1
网站建设需要满足的条件
实现多态必须满足什么条件
3 虚函数机制 virtual mechanism 先看代码: class A { public: virtual void print() { cout<<"A.."<<endl; } }; class B : public A { public: virtual void print() { cout<<"B.."<<endl; } }; void test4() { A a1; //base B b1;//child a1 = b1;//A::operator= 对
程序员小王
2018/04/13
7780
实现多态必须满足什么条件
mysql技巧:如果记录存在则更新/如果不存在则插入的三种处理方法
新增一个员工时,如果该员工已存在(以员工号f_emp_code作为判断依据),则更新,否则插入。而且工资f_salary,更新时,不得低于原工资(即:工资只能涨,不能降)。
菩提树下的杨过
2018/12/21
9.3K0
【说站】js如何检查是否满足条件
1、every只有满足每个条件才能返回true,some是任何一个满足返回true的项目,filter过滤出所有符合条件的项目(找不到返回空)。
很酷的站长
2022/11/24
2.2K0
【说站】js如何检查是否满足条件
RestHighLevelClient批量删除满足某些条件的数据
这个可以通过DeleteByQueryRequest来实现,实例代码如下 /** * 批量删除文档 * @throws IOException */ @Test public void deleteByQueryRequest() throws IOException { DeleteByQueryRequest request = new DeleteByQueryRequest("sub_bank1031"); request.setDocTypes("sub_bank");
johnhuster的分享
2022/03/29
1.8K0
Mysql删除满足自己某个条件的表
问题描述: 自循环删除,大概意思就是删除一个表里的部分数据,这些数据所满足的条件也在自己表里 ,我有点儿晕,直接上代码,这是select出来的,正常流程,如果要删除直接改成delete from …就行了
诡途
2022/05/09
2.7K0
使用FILTER函数筛选满足多个条件的数据
其中,参数数组,是想要筛选的数据,可以是单元格区域或者数组。参数包括,指定筛选的条件,应返回TRUE,以便将其包含在查询中。参数是否为空,如果没有满足筛选条件的结果,则可以给该参数指定要返回的内容,可选。
fanjy
2023/09/15
3.6K0
使用FILTER函数筛选满足多个条件的数据
14:求满足条件的3位数
14:求满足条件的3位数 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为:  1.该数为完全平方数  2.该数至少有2位数字相同  例如,100同时满足上面两个条件。 输入输入一个数n,n的大小不超过实际满足条件的3位数的个数。输出输出为第n个满足条件的3位数(升序)样例输入 1 样例输出 100 1 #include<iostream> 2 #include<cstdio> 3 #
attack
2018/04/11
1.4K0
26:统计满足条件的4位数个数
26:统计满足条件的4位数个数 总时间限制: 1000ms 内存限制: 65536kB描述 给定若干个四位数,求出其中满足以下条件的数的个数:  个位数上的数字减去千位数上的数字,再减去百位数上的数字, 再减去十位数上的数字的结果大于零。 输入输入为两行,第一行为四位数的个数n,第二行为n个的四位数,数与数之间以一个空格分开。(n <= 100)输出输出为一行,包含一个整数,表示满足条件的四位数的个数。样例输入 5 1234 1349 6119 2123 5017 样例输出 3 来源习题
attack
2018/04/03
2.5K0
自建视频流媒体服务器需要满足哪些条件?
作为一个视频行业很多年的从业者,我结识了很多这个行业的一些大牛和小白,由于我自己是搭建视频流媒体服务器的,我发现这段时间越来越多的人问我关于视频流媒体服务器搭建的问题,当然了我也很乐意为大家解答。
EasyNVR
2020/05/20
1.9K0
PostgreSQL 如果想知道表中某个条件查询条件在索引中效率 ?
最近一直在寻找,如何不通过 select count(*) from table where 字段 = ‘值’ 类似这样的语句,大约会产生多少结果行的问题的解决方案。在一些大表存在的数据库,去不断查询某一个值在这个大表里面的行数,一直是不受欢迎的事情,最后找到了一个还算靠谱的方案。
AustinDatabases
2023/09/18
1900
PostgreSQL  如果想知道表中某个条件查询条件在索引中效率 ?
2022-12-19:大的国家。如果一个国家满足下述两个条件之一,则认为该国是 大国 :面积至少为 300 万平方公里(即,30
2022-12-19:大的国家。如果一个国家满足下述两个条件之一,则认为该国是 大国 :
福大大架构师每日一题
2023/02/01
6690
【PTA】查找满足条件的最后一个整数 (15分)
本题要求编写程序,将输入的n个整数存入数组a中,然后在数组a中查找给定的x。如果数组a中的元素与x的值相同,输出满足条件的最后一个元素的下标(下标从0开始);如果没有找到,输出“Not Found”。
Regan Yue
2021/09/16
1K0
Excel公式练习43: 统计满足多个条件的条目数量
导语:继续研究来自于excelxor.com的案例。这个案例与之前相比并不复杂,但要求公式最简。
fanjy
2020/02/29
2.5K0
在满足逻辑条件的多个相邻区域的边缘效应填充。
import matplotlib.pyplot as plt import numpy as np y = np.arange(0.0, 2, 0.01) x1 = np.sin(2 * np.pi * y) x2 = 1.3 * np.sin(4 * np.pi * y) fig, [ax1, ax2, ax3] = plt.subplots(1, 3, sharey=True, figsize=(6, 6)) ax1.fill_betweenx(y, 0, x1) ax1.set_title
裴来凡
2022/05/28
8500
在满足逻辑条件的多个相邻区域的边缘效应填充。
spring注解@Conditional 按照一定的条件进行判断,满足条件给容器中注册bean
@Conditional({}) 按照一定的条件进行判断,满足条件给容器中注册bean * 在类上使用表示,满足条件会执行这个类,如果不满足则类中所有方法都不会加载 * 在方法上使用表示,满足条件会执行这个方法
全栈程序员站长
2022/11/17
2850
问与答58: 如何用公式实现自动填入满足相应条件的数字?
A:想了半天,没有想到简单的公式。使用数组公式找到N对应的日期数不难,但是如何将找到的多个日期数连在一起却难倒了我!幸好,Excel 2016版新增了一个TEXTJOIN函数,完美解决了这个连接问题。
fanjy
2019/07/19
1.8K0
点击加载更多

相似问题

如果满足条件,则匹配整个单词

421

如果未满足条件,则排除整个页面

10

如果前面匹配的单词/数字满足条件,则继续regex

29

如果满足条件,则显示绘图

12

如果满足条件,则中断循环

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文