List<T> 不是流,根本不按流的方式处理。MemoryStream 才是流。
解决方案 »
- 求C# 利用固定word模板 批量导出信息表 (导出后可编辑修改)
- sort怎样才可以排降序
- 一个很奇怪的编码问题,不是乱码就是报错,而且原因很怪,大家帮忙看看
- 关于mutex的问题.请教高手...
- 在asp.net中,datagrid导入excel打印数据!帮帮小妹啊!在线等!
- 怎样从一个 bitmap 转换成一个 ICON,并能指定某个颜色做透明色?
- 定义一个数组a[]={1,2,3,4,5...};如何做才能知道a[]里包含有3;
- C# 调用 java开发的dll,dll里面调用 so文件[有偿服务]
- c#正则表达式提取td标签内容的问题
- 大虾帮帮忙,想个办法!
- WPF画了10w条线,图像可以展示,但是保存到png文件时,提示“图像尺寸超过此编码解码器支持的范围”?
- 关于HelpProvider的使用方式
先进后出就是Stack然后你所谓的用了很长的时间,这个能具体化么?
1.根据value.count修改list容量至合适大小
2.调用Array.Copy进行块复制
这种情况下效率会很高
如果不是,则枚举迭代器,逐个添加,如果value比较大,自然就慢了
所以你的建议是直接用MemoryStream来代替list<byte>?
用(byte[] or byte*)
首先在内存中划分一块足够大的 buffer
我不推荐你用 byte[] 我比较推荐你使用
byte* 用 stackalloc / heapAlloc 分配
所以用指针+固定长度的数组自己构造一个队列比较好。
问题是这玩意是c#代码,我该咋用指针呢
如果C#能像C++那样直接操作内存的话就好了
byte数组根本不应该出现"慢"的问题如果你说它"慢",那么必然是因为:
1.你在其他的地方处理速度太慢,跟用什么来存无关
2.你所谓的"快"要求太高,用台式机根本实现不了,你需要一个"银河"计算机
问题是这玩意是c#代码,我该咋用指针呢
如果C#能像C++那样直接操作内存的话就好了可以使用指针, 使用unsafe 代码
谢谢,看来提高性能需要使用C#里面的unsafe编程,但现在有个问题就是我的数据结构非常复杂,
只有在处理完以后,byte*的总长度才可以知道,所以需要有类似C++ vector的自动变长机制来处理,不知道
byte[]有没有什么方法可以来延展长度的?
list<byte[]>这样的方式来进行延展.
byte[]的长度我可以指定为1024
但有个比较蛋疼的问题就是,我在往里面填数据的时候,如果填到每个byte[]的末尾
比如还剩1个字节,而我要填入的数据则是有4个字节
那就必然要把这4个字节分成1个字节+3个字节这样来进行写入了
解析的时候处理也不太好写
不能一次性分配这么大的空间,因为上层传入的数据大小不固定
有可能是25k的图片数据,也有可能是8M以上的图片数据
有时也可能会是一个非常小的Command
我想了下,这种方法可能也会有问题,我们那个系统是个多线程系统,这么多线程公用一个buff的话势必涉及到锁的问题
既然是多线程,不要多线程共用一个buff
这个性能数据应该算是达标了
明天再试试unsafe的写法