나는 날짜를 비교하고 검증하는 코드를 가지고있다.증가 처리 시간
문제 :
이 코드는 실행시에 너무 많은 시간을하고있다. 이 코드에 주석을 달면 실행 시간이 훨씬 적습니다. 이것에서 나는이 코드가 그것에 약간의 오버 헤드가 있음을 이해할 수있다. 이 코드의 효율성을 높이기위한 제안을하십시오.
DateTime regDate;
DateTime dob;
extractDate(buffer[5], buffer[6], out regDate, out dob);
private void extractDate(string date, string rDate, out DateTime regDate, out DateTime dob)
{
if (date == "") // Date of birth is not given;
{
regDate = getStandardDate(rDate); // MM/DD/YYYY
dob = regDate.AddYears(-18);
}
else
{
dob = getStandardDate(date);
}
if (rDate == "")
{
dob = getStandardDate(date);
regDate = dob.AddYears(18);
}
else
{
regDate = getStandardDate(rDate);
}
}
private DateTime getStandardDate(string date)
{
bool checkDate = isValidDate(date);
if (checkDate)
{
IFormatProvider culture = new System.Globalization.CultureInfo("en-gb", true);
DateTime dt;
if (karachiDateFormat)
{
dt = DateTime.Parse(date);
}
else
{
dt = DateTime.Parse(date, culture);
}
return dt.Date;
}
else
{
return DateTime.Now.Date;
}
}
private bool isValidDate(string date)
{
IFormatProvider culture = new System.Globalization.CultureInfo("en-gb", true);
DateTime Ttime;
if (!karachiDateFormat)
{
Ttime = DateTime.Parse(date, culture);
}
else
{
Ttime = DateTime.Parse(date);
}
date = string.Empty;
date = Ttime.Date.ToShortDateString();
string[] splitDate = date.Split('/');
int day = Int32.Parse(splitDate[1]);
int month, year;
month = Int32.Parse(splitDate[0]);
year = Int32.Parse(splitDate[2]);
DateTime time = DateTime.Now;
if ((day > 0 && day < 32) && (month > 0 && month <= 12) && (year > 1950 && year < time.Year))
{
return true;
}
else
{
return false;
}
}
그래서 모든 코드를 주석 처리 할 때 왜 더 빠르는지 궁금 할 것입니다. – Osiris
코드를 프로파일 링하십시오. 침체의 원인을 정확하게 찾아냅니다. 너무 느려서 무슨 뜻이야? 어떻게 알았어? – Oded
@Osiris : 아니요. 주석으로 처리 한 후 더 빠르다는 사실을 알면 주석 처리 된 코드가 속도 저하의 원인이되어야한다고 말합니다. –