gpt4 book ai didi

c# - 是否可以使用 ReadOnlySpan 从字符串中解析 int

转载 作者:太空宇宙 更新时间:2023-11-03 20:50:19 26 4
gpt4 key购买 nike

在解析 int 时数据来自 string , 有没有办法使用 ReadOnlySpan<char> ?喜欢int.Parse(str.AsSpan().Slice(2,3))

因为如果 int 数据在字符串的中间,比如 "Humans have 206 bones" ,然后我必须先制作一个子串,然后将其传递给 int.Parse() .使用Span在这种情况下似乎合乎逻辑。

最佳答案

是的,这是可能的(我使用的是 .NET Core 3.0):

var text = "Humans have 206 bones";
ReadOnlySpan<char> asSpan = text.AsSpan();
var number = int.Parse(asSpan.Slice(12, 3));

我用 BenchmarkDotNet 做了一些检查,从 string 解析 intSubString 相比,通过这段代码花费了大约 60-80% 的时间>.

|          Method |       N |             Mean |           Error |          StdDev | Ratio |
|---------------- |-------- |-----------------:|----------------:|----------------:|------:|
| Substring | 1 | 31.14 ns | 0.0422 ns | 0.0374 ns | 1.00 |
| AsSpanThenSlice | 1 | 25.34 ns | 0.0519 ns | 0.0485 ns | 0.81 |
| AsSpanInOne | 1 | 19.51 ns | 0.0544 ns | 0.0425 ns | 0.63 |
| | | | | | |
| Substring | 1000 | 31,662.81 ns | 48.0289 ns | 44.9262 ns | 1.00 |
| AsSpanThenSlice | 1000 | 25,715.43 ns | 20.8666 ns | 17.4245 ns | 0.81 |
| AsSpanInOne | 1000 | 18,344.96 ns | 15.3018 ns | 12.7777 ns | 0.58 |
| | | | | | |
| Substring | 1000000 | 68,811,376.67 ns | 135,815.2457 ns | 127,041.6651 ns | 1.00 |
| AsSpanThenSlice | 1000000 | 44,843,871.11 ns | 97,723.9653 ns | 91,411.0578 ns | 0.65 |
| AsSpanInOne | 1000000 | 38,622,410.65 ns | 27,490.1451 ns | 22,955.5162 ns | 0.56 |

关于c# - 是否可以使用 ReadOnlySpan<char> 从字符串中解析 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56091908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com