仅对两个索引使用交错列表

Using jagged list for only two indexes

我有一个应用程序使用了大约 5 个不同的 "list of lists",但我只使用索引 0 或索引 1。

这是不好的做法还是会导致性能不佳?

这是我做的一个与我正在做的类似的例子:

internal class Program
{
    private const int Count = 64;
    private static int _index;
    private static List<List<int>> _data = new List<List<int>>();
    private static List<List<int>> _dataprevious = new List<List<int>>();
    private static List<List<double>> _datacalculated = new List<List<double>>();
    private static Random _rand = new Random();

    private static void GetData(object o)
    {
        //Clear list and add new data
        _data[_index].Clear();
        _datacalculated[_index].Clear();
        for (var i = 0; i < Count; i++)
        {
            _data[_index].Add(_rand.Next(4500, 5500));
        }
        for (var i = 0; i < Count; i++)
        {
            _datacalculated[_index].Add(_data[_index][i]/4.78);
        }
        //Output data to console
        Console.WriteLine(_index + ":");
        Console.WriteLine(string.Join(":", _data[_index]));
        Console.WriteLine();
        //Switch between index 0 and 1
        _index = 1 - _index;
    }

    private static void Main()
    {
        //Setup lists
        for (var i = 0; i < 2; i++)
        {
            _data.Add(new List<int>());
            _dataprevious.Add(new List<int>());
            _datacalculated.Add(new List<double>());
        }
        //Get new data every 5 seconds
        new Timer(GetData, null, 0, 5000);
        Console.ReadLine();
    }
}

will it lead to poor performance

性能是相对的。在这里,您正在执行的其他操作完全控制了(少数)列表访问。如果您在局部变量中缓存 _data[_index](和其他),那么您将每 64 次迭代面临一次列表访问,这没什么。

您可以通过分析代码明确地回答这个问题。但是上一段中的粗略计算也是有效的,可以节省一些时间。