我正在开发日期转换器,它将日期转换为我的时间。为此,我具有从日期开始到用户指定日期的总天数,该天数将计算这些时间之间的总天数,然后开始计算确切日期。问题是,我正在使用的循环花费的时间更长。
// int startingEngYearForSelection = 1944;
// int startingEngMonthForSelection = 1;
// int startingEngDayForSelection = 1;
int nepYear = startingNepYearForSelection;
int nepMonth = startingNepMonthForSelection;
int nepDay = startingNepDayForSelection;
Log.e("Time Taken", String.valueOf(System.currentTimeMillis()));
while (totalEngDaysCount != 0)
{
int daysInIthMonth = EachMonthNumberOfDates.getNepaliMap().get(nepYear)[nepMonth];
nepDay++;
if (nepDay > daysInIthMonth) {
nepMonth++;
nepDay = 1;
}
if (nepMonth > 12) {
nepYear++;
nepMonth = 1;
}
totalEngDaysCount--;
}
这将以我的格式计算天,月和年,但是花费的时间比我想象的要长。我如何更快地完成任务有什么帮助吗?
编辑: EachNumberOfDates.getNepaliMap()给出每月其他类的总天数。 定义为:
nepaliMap.put(2000, new int[] { 0, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31 });
nepaliMap.put(2001, new int[] { 0, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30 });
答案 0 :(得分:1)
getNepaliMap
仅返回一个字段,O(1)也返回。Map.get
,对于几乎所有Map
实现,都是O(1)。[nepMonth]
为O(1)。您无法在此处进行优化。除非您想出一种并行化的方法,否则您无法使其更快。
您要完成的任务并不清楚,但是看起来您可以让每个线程在一定时期内负责计算,然后将结果合并。