C# new byte[]内部原理是什么样?循环1000000次, new byte[100] 比new byte[10000] 时间短

如题所述

第1个回答  2013-09-27
你是说循环1000000次new byte[100]这样的方法么?
比如这样?

for(int i =0; i!=1000000;i++)
{
byte[] bytes = new byte[100]

}
我想大该原因
new byte[100] 比new byte[10000] 时间短
的原因是:
操作系统的内存分配方式,new byte[100]能更多的采用连续分配内存,占用的空间少.
而new byte[10000]可能会更多的涉及到非连续分配内存(内存数据的移动,移动,标记,回收等....涉及到操作系统知识),需要操作系统涉及到更多的内存优化算法所以就慢了.本回答被提问者采纳
第2个回答  2013-09-27
有可能是编译器把程序优化了。
最后变成了同一个 byte[100]被用了1000000次。
第3个回答  2013-09-27
不仅如此还有
net分配的内存 是初始化的所以 分配1mb 比 100mb时间短了追问

可是分配1mb 的时间与 100mb时间 差距远小于100背

C# new byte[]内部原理是什么样?循环1000000次, new byte[100] 比new...
new byte[100] 比new byte[10000] 时间短 的原因是:操作系统的内存分配方式,new byte[100]能更多的采用连续分配内存,占用的空间少.而new byte[10000]可能会更多的涉及到非连续分配内存(内存数据的移动,移动,标记,回收等...涉及到操作系统知识),需要操作系统涉及到更多的内存优化算法所以就慢了....

C# new byte[]内部原理是什么样?循环1000000次, new byte[100] 比new...
new byte[100] 比new byte[10000] 时间短 的原因是:操作系统的内存分配方式,new byte[100]能更多的采用连续分配内存,占用的空间少.而new byte[10000]可能会更多的涉及到非连续分配内存(内存数据的移动,移动,标记,回收等...涉及到操作系统知识),需要操作系统涉及到更多的内存优化算法所以就慢了....

c# 中的 new byte[]{(byte)j}是什么意思 ?说通俗点谢谢!
新建一个byte类型数组,按照你的就是数组长度为1,存放一个数据j。(byte)j是一个转换,将j转换为byte类型。

C++动态申请100M内存出错
00000];这句话是在栈上分配内存,栈很小的(几M),显然会溢出了。动态申请内存是要在堆上申请,用new或者malloc:BYTE* p = new BYTE[10000000];new出来的内存不会自动回收,你要在使用完毕之后用delete回收:delete[] p;另外,站长团上有产品团购,便宜有保证 ...

有关c#代码中 “byte[] 变量名” 的问题?
byte就是类型的数据,byte[]是定义的数组啊,另外string 和string[]是不一样的,string相当于是一个char[],char类型的数组,而string[]就是平时指的字符串数组

C# 编程问题 byte 数组,需要释放吗?
using(byte streamBuff = new byte[nStreamSize]){ \/\/ 你要用的代码,} 在这个USING结束的时候CLR机制会强制启动的..也就自动释放了..同样的..如果你要用到全局.那么尽量可能的在是用完后手动清空.因为..这样做能使效率提高...即使是CLR机制也不是马上就能处理掉..他是要判断是否有使用..有延迟...

C# 这句是什么意思啊? byte[] buf = new byte[20]
新建一个byte型数组buf,给其20个byte大小的内存空间

通过C#代码,如何将byte数据转换成十进制数据??? byte[] buf=new...
通过C#代码,如何将byte数据转换成十进制数据??? byte[] buf=new byte[n];  我来答 分享 微信扫一扫 网络繁忙请稍后重试 新浪微博 QQ空间 举报 浏览11 次 可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。 数据转换 十进制 c# 代码 byte 搜索资料 本地图片 图片...

byte buffer[] =new byte[10]与byte[] buffer =new byte[10]有什么区 ...
java中"byte buffer[]"和"byte[] buffer",只是不同的写法,完全相同的含义。"byte buffer[]"实际上是为了兼容C的语法形式(因为太多人第一语言是C,为了让这些人感觉习惯一点呗),而"byte[] buffer"很显然,是更自然的表达方式。

C#中如何把字节数组清空?
清空是什么意思?c#中不需要做这个操作,如果一定要重新初始化,最简单的方法就是重新new一个,也就是把 byte[] 释放掉。如果真的想强制清空的话,可以用using,例如:using(byte buff = new byte[Size]){ \/\/ 你要用的代码,}

相似回答