应该将 blob 内容绑定到哪个 C# 数据结构以实现最佳的逐行处理?
Which c# data structure should blob contents be bound to for optimal line by line processing?
在 Azure Functions 中,您可以使用 blob 触发器。此触发器可以是 bound to a variety of data structures:
- TextReader(仅限输入)
- 流
- ICloudBlob
- CloudBlockBlob
- CloudPageBlob
在处理日志数据(即要处理每一行的数据)时,应使用哪种结构来最大程度地减少计算时间和内存使用量?
这是我目前使用的流程,感觉不是很优雅。可能不相关,但目的是将数据序列化为 JSON 并放入队列或 documentDB。
public static void insertBlob([BlobTrigger] TextReader logBlob, TraceWriter log)
{
string[] text = logBlob.ReadToEnd().Split('\n');
// Do some stuff
log.Info(text.Count().ToString());
}
从性能的角度来看,最好使用流,因为这会减少内存 pressure/load 时间。
就算法方法而言,当您看到 '\n'
字符时,您不会比仅存储缓冲区并处理该行更好。如果您不太担心性能等问题,我可能会使用您拥有的东西,因为它非常简单。无论如何,函数都会水平缩放。
在 Azure Functions 中,您可以使用 blob 触发器。此触发器可以是 bound to a variety of data structures:
- TextReader(仅限输入)
- 流
- ICloudBlob
- CloudBlockBlob
- CloudPageBlob
在处理日志数据(即要处理每一行的数据)时,应使用哪种结构来最大程度地减少计算时间和内存使用量?
这是我目前使用的流程,感觉不是很优雅。可能不相关,但目的是将数据序列化为 JSON 并放入队列或 documentDB。
public static void insertBlob([BlobTrigger] TextReader logBlob, TraceWriter log)
{
string[] text = logBlob.ReadToEnd().Split('\n');
// Do some stuff
log.Info(text.Count().ToString());
}
从性能的角度来看,最好使用流,因为这会减少内存 pressure/load 时间。
就算法方法而言,当您看到 '\n'
字符时,您不会比仅存储缓冲区并处理该行更好。如果您不太担心性能等问题,我可能会使用您拥有的东西,因为它非常简单。无论如何,函数都会水平缩放。