Rob*_*Rob 0 .net c# performance datetime stopwatch
我正在创建一个月的日期列表.我想知道什么会更有效率
List<DateTime> GetDates(DateTime StartDay) {
List<DateTime> dates = new List<DateTime>();
int TotalDays=StartDay.AddMonths(1).AddDays(-1).Day;
for (int i=1; i<TotalDays; i++) {
dates.Add(new DateTime(StartDay.Year, StartDay.Month, i));
}
return dates;
}
Run Code Online (Sandbox Code Playgroud)
要么
List<DateTime> GetDates(DateTime StartDay) {
List<DateTime> dates = new List<DateTime>();
DateTime NextMonth = StartDay.AddMonths(1);
for (DateTime curr=StartDay; !curr.Equals(NextMonth); curr=curr.AddDays(1)) {
dates.Add(curr);
}
return dates;
}
Run Code Online (Sandbox Code Playgroud)
基本上,新的DateTime()或DateTime.addDays更有效率.
更新:
static void Main(string[] args) {
System.Diagnostics.Stopwatch sw=new System.Diagnostics.Stopwatch();
long t1, t2, total;
List<DateTime> l;
DateTime begin = DateTime.Now;
total = 0L;
for (int i=0; i<10; i++) {
sw.Start();
l = GetDates(begin);
sw.Stop();
sw.Stop();
t1 = sw.ElapsedTicks;
sw.Reset();
sw.Start();
l = GetDates2(begin);
sw.Stop();
t2=sw.ElapsedTicks;
total += t1- t2;
Console.WriteLine("Test {0} : {1} {2} : {3}", i,t1,t2, t1- t2);
}
Console.WriteLine("Total: {0}", total);
Console.WriteLine("\n\nDone");
Console.ReadLine();
}
static List<DateTime> GetDates(DateTime StartDay) {
List<DateTime> dates = new List<DateTime>();
int TotalDays=StartDay.AddMonths(10000).AddDays(-1).Day;
for (int i=1; i<TotalDays; i++) {
dates.Add(new DateTime(StartDay.Year, StartDay.Month, i));
}
return dates;
}
static List<DateTime> GetDates2(DateTime StartDay) {
List<DateTime> dates = new List<DateTime>();
DateTime NextMonth = StartDay.AddMonths(10000);
for (DateTime curr=StartDay; !curr.Equals(NextMonth); curr=curr.AddDays(1)) {
dates.Add(curr);
}
return dates;
}
Run Code Online (Sandbox Code Playgroud)
Test 0 : 2203229 63086205 : -60882976 Test 1 : 63126483 102969090 : -39842607 Test 2 : 102991588 93487982 : 9503606 Test 3 : 93510942 69439034 : 24071908 Test 4 : 69465137 70660555 : -1195418 Test 5 : 70695702 68224849 : 2470853 Test 6 : 68248593 63555492 : 4693101 Test 7 : 63578536 65086357 : -1507821 Test 8 : 65108190 64035573 : 1072617 Test 9 : 64066128 64933449 : -867321 Total: -62484058 Done
结果总是负面的...方式为负,所以,看起来像构造函数和整数测试是更有效的方法.