代码之家  ›  专栏  ›  技术社区  ›  Muhammad Hasan Khan

iLockByteSonG全局写入性能会随着时间的推移而降低

  •  0
  • Muhammad Hasan Khan  · 技术社区  · 16 年前

    我创建了ILockBytesOnHGlobal,并重复写入64k数据。我注意到,WriteAt性能会随着时间的推移而降低。

    性能下降的原因可能是什么? 它是否与河流增长有关?

        public override void Write(byte[] buffer, int offset, int count)
        {
            EnsureBufferSize(count);
            Marshal.Copy(buffer, offset, hGlobalBuffer, count);
            lockBytes.WriteAt(writeOffset, hGlobalBuffer, count, out temp);
            writeOffset += temp.ToUInt32();
        }
    
    2 回复  |  直到 16 年前
        1
  •  1
  •   Pent Ploompuu    16 年前

    CreateILockBytesOnHGlobal 文档说明它使用 GlobalReAlloc 增加内存块。 将数据从旧内存块复制到新的(或更大的)内存块,因此这会导致性能随时间下降。

        2
  •  1
  •   Tim Cooper    15 年前

    这纯粹是猜测,但我在 WriteAt

    如果ulOffset超过了 字节数组和cb大于 字节数组的大小。填充物 写入字节数组的字节是

    我找到了文件 here