为什么这段代码:
return kendo.ui.DropDownList.requestData(jQuery("#FromDistrict"))
比这段代码快几倍:
class Cord : IComparable<Cord>
{
public int X { get; set; }
public int Y { get; set; }
public int CompareTo(Cordother)
{
return this.X.CompareTo(other.X);
}
}
List<Cord> Cords = LoadCords();
stopwatch.Start();
foreach(var cord in Cords)
{
// do something
}
stopwatch.Stop();
为了提高我的应用程序(处理数百万条记录)的性能,我需要一个有序的集合。我还尝试在List项上使用SortSet和Sort方法并实现List<Cord> Cords = LoadCords().OrderBy(r=> r.x).ToList();
stopwatch.Start();
foreach(var cord in Cords)
{
// do something
}
stopwatch.Stop();
。无论哪种方式,有序列表上的相同迭代比未触及的列表需要更多的时间。为什么这样,我怎样才能使我的排序集合像基本集合一样有效地迭代?
编辑:我只衡量迭代的时间。我知道排序需要时间。循环内发生的操作无关紧要。
字面意思是当我用排序注释掉行时,迭代时间变小了。它不应该,而且在其他基准测试中它不会,但在我目前的应用程序中,这种情况发生了,我想知道是否有人可以就此主题给我一些建议。
答案 0 :(得分:0)
尝试使用linq查询首先过滤结果,而不是在循环中执行条件。
$host = 'mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset='.DB_CHARSET;
$pdo = new PDO($host, DB_USER, DB_PASSWORD);
此外,正如其他建议使用DataTime.Now不会给出准确的结果。使用秒表。