在没有线程阻塞的情况下,可以用Jil反序列化web响应吗

本文关键字:Jil 反序列化 web 响应 线程 情况下 | 更新日期: 2023-09-27 18:20:55

就挂钟时间而言,逐块反序列化web响应是免费的,因为等待块的时间通常比反序列化时间长得多。然而,现有的解决方案:

var streamReader = new System.IO.StreamReader(responseStream);
var deserialized = Jil.JSON.Deserialize<Result>(streamReader);

阻塞线程直到响应完成,这会使系统在高并发场景中陷入停顿。要将Jil与异步响应读取一起使用,我们需要类似的东西

var chunkDeserializer = new JilChunkDeserializer<Response>();    
chunkDeserializer.Consume(buffer, offset, length); //with baked-in string encoding
//chunkDeserializer.Consume(stringChunk); alternative with one extra allocation per chunk

其中CCD_ 2在所有数据都已写入时被调用。吉尔身上有类似的东西吗?如果没有,是否可以实施?适度的性能损失是没有意义的,因为它被块等待时间所吸收。

在没有线程阻塞的情况下,可以用Jil反序列化web响应吗

Jil目前无法做到这一点,它只能反序列化完整的JSON文档。

假设性地说:我也不确定这是否真的会更快,因为Jil必须能够在输入不足时隐藏状态(随后恢复)。现在,该状态的大部分都在堆栈中,将其移出堆可能会在运行时花费比您节省的更多的成本。