English 中文(简体)
如何高效率地撰写预先固定的微观数据
原标题:How to write length prefixed binary data efficiently

I m 编写双元数据格式,以存档,其中载有序列物体图表。 为了更能抵御错误(并能够解答问题),我正在考虑在上游确定每个目标。 目前使用C#和BaryWriter的Im,但这是一个普遍的问题。

The size of each object isn t known until it has been completely serialized, so to be able to write the length prefixes there are a number of strategies:

  1. 在标的编号之后,使用具有足够空间的书写缓冲器,随机进入,并在正确位置上加长。

  2. 每一物体都写给自己的记忆,然后将缓冲和缓冲内容的长度写到主流。

  3. 第1份通行证中的所有物体的注销时间为零,记住所有物体尺寸的档案中的位置(物体大小表),并作第二次填满所有尺寸的通行证。

  4. ?

总面积(因而是第一/最主要物体的大小)通常在1mb左右,但可高达50-100mb。 我关切的是这一进程的表现和记忆使用。

哪些战略最有效率?

最佳回答

哪些战略最有效率?

确定这一点的唯一途径是衡量。

我的第一个本能是使用第2号,但知道这可能会给GC带来压力(或者如果工人的溪流超过80Kb,那么大物体的碎裂)。 但是,考虑到跟踪这些职位的复杂性,第3号是可维持的。

最后,你需要用你的数据来衡量,并且认为,除非你有特殊情况,否则业绩将主要依靠网络或储存业绩,而不是通过记忆处理。

问题回答

100MB在小型服务器(或标准台式电脑)的记忆中仅占2.5%。 I d 序列ize to memory (e.g. a byte[] protocol/MemoryStream with BinaryWriter) and subsequently flush that tomoto when do.

这还将使你的代码保持干净、紧凑和易于管理——使你避免一分钟的失灵,并在大博里找回。

希望这一帮助!

如果你控制这种格式,你可以积累一份标尺清单,并在你档案结束时附上目录。 然而,不要忘记这一点。 NET 世界你书写的缓冲器在实际转移到磁带之前多次复印。 因此,通过避免(say)附加而取得的任何成就都不会大大提高总体效率。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签