仅使用锯齿状列表中的两个索引

时间:2015-03-27 19:52:49

标签: c# arrays list jagged-arrays

我有一个使用大约5个不同“列表列表”的应用程序,但我只使用索引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();
    }
}

1 个答案:

答案 0 :(得分:0)

  

会导致表现不佳

表现是相对的。在这里,您正在进行的其他操作完全支配(少数)列表访问。如果将_data[_index](和其他)缓存在局部变量中,那么每64次迭代将面临一次列表访问,这一点都没有。

您可以通过分析代码来明确回答这个问题。但是后面的信封计算(如前一段中的内容)也是有效的,可以节省一些时间。