优化:如何以避免数组大小调整的方式构建Windows.Data.Json JsonArray?

时间:2018-01-03 01:15:49

标签: c# json

我有一些我想要优化的工作代码,它使用Windows.Data.Json JsonArray对象:

// This works but could be improved?

JsonArray inputArray;

...

// Filter the array
JsonArray filteredObjs = new JsonArray();
foreach (IJsonValue jsonValue in inputArray)
{
    JsonObject obj = jsonValue.GetObject();
    if (SomeFilterOperation(obj))
        filteredObjs.Add(entityObj); // Amortized O(1)
}

return filteredObjs;

在我的代码中,“添加”功能运行超过10,000次 - 不一定都在同一范围内,但它仍会导致一些长数组。所以这是优化的候选者。

添加是分摊的O(1),但是当超出容量时避免内部数组调整大小操作会很好。由于我知道filteredObjs的最大大小为inputArray.Count,因此我尝试制作一个具有指定容量的列表,因此无需调整大小:

var filteredObjs = new List<IJsonValue>(inputArray.Count);
foreach (IJsonValue jsonValue in inputArray)
{
    JsonObject obj = jsonValue.GetObject();
    if (SomeFilterOperation(obj))
        filteredObjs.Add(obj); // will never cause a resize, is thus O(1) always
}

return /* how to turn this List<IJsonValue> into a JsonArray? */

...但是JsonArray没有任何接受List<IJsonValue>的构造函数,这令人沮丧,因为这就是JsonArray

主要问题:

有没有办法将List<IJsonValue>转换为JsonArray或以避免调整大小的方式构建JsonArray

0 个答案:

没有答案