首页 > 解决方案 > 优化字符串操作

问题描述

现在是 2019 年,我们有一个使用大型机作为数据存储和交易的银行项目。

我们正在使用 DTO(Commarea,纯 c# 类),它被转换为纯字符串(这就是大型机的工作方式),然后发送到大型机。

在将类转换为字符串表示时,我们使用了几个字符串操作,例如子字符串、左填充、右填充、修剪等。

可以想象,这会导致多次字符串分配,从而导致垃圾收集。它通常在第 0 代,但仍然存在。

特别是像Decimalwhich is a Pack typein mainframe 这样适合 8 个字节的类型会创建几个字符串。

我尝试使用ReadonlySpan<char>例如子字符串。见例子

但是,有些操作不可用PadRightPadLeft因为它是只读跨度。

更新: 澄清转换的一部分发生如下:

val.Trim().Substring(5).PadRight(10);

我知道这会创建 3 个字符串。我知道字符串是不可变的。ReadonlySpan我的问题是关于使用or进行上述操作Memory

我不能仅将 ReadonlySpan 用于子字符串,因为一旦我调用ToString方法,我就会失去好处。

最后我必须ToString一路打电话。

是否有另一个结构支持子字符串后面的其他操作,我实际上可以将删除数据添加到内存中?

谢谢。

标签: c#string

解决方案


推荐阅读