有人能就这种情况给些建议吗: 我有100-500个元素,它们是动态的,也就是说每次请求时它们的数量总是不同的,包含元素名称、类型和ID。目前我正在使用多维数组。
public static Object[,] Item_data = new Object[500, 3];
然后我将数据设置到数组中:
int found_items = 0;
foreach (Object m in queryCollection)
{
Item_data[found_items, 0] = m[0];
Item_data[found_items, 1] = m[1];
Item_data[found_items, 2] = m[0];
found_plans++;
}
我有8个同样结构的数组,其中填充了不同的数据,它们大约需要0.8-1.5秒的时间。问题是我需要按id、名称和类型对这些数组进行升序和降序排序。如果我手动使用另一个循环来排序数据,那么需要花费更多的时间。因此,我注意到List(T)具有排序功能,但根据这些主题,它要慢得多:Arrays vs. Lists的性能。
https://jacksondunstan.com/articles/3058
https://softwareengineering.stackexchange.com/questions/221892/should-i-use-a-list-or-an-array
在这种情况下使用List(T)值得吗?还是有其他推荐的东西?
int
)的数据使用Object
会导致访问效率非常低下。而且多维数组会导致访问不便。首先从语言中明显的部分开始(即具有属性的类,您可以使用内置的.OrderBy
进行排序)。只有当这还不够快时,您才应该考虑一些花哨的东西,比如使用在线排序算法或B树在数据进入时对其进行排序,而不是之后再进行排序。此外,永远不要忘记数据库的存在,很多聪明的人已经对它们进行了优化。 - Jeroen Mostert