Use System.currentTimeMillis() instead of Date or Calendar
http://shihabuddin.blogspot.co.nz/2007/07/use-systemcurrenttimemillis-instead-of.html
Another bad example:
When we need only the millisecond representation of the current time.
When should we use
When should we use
Always try to use
Why?
Because of performance.
A BAD example:
System.currentTimeMillis() instead of java.util.Date orjava.util.Calendar.Why?
Because of performance.
Date and Calendar internally callsSystem.currentTimeMillis(). So, why not use it directly?A BAD example:
long currentTime = Calendar.getInstance().getTimeInMillis();
So, what does Calendar.getInstance() actually do? Following lines are just copied from the source code of jdk1.5:public static Calendar getInstance()
{
Calendar cal = createCalendar(TimeZone.getDefaultRef(),
Locale.getDefault());
cal.sharedZone = true;
return cal;
}
private static Calendar createCalendar(TimeZone zone,
Locale aLocale)
{
if ("th".equals(aLocale.getLanguage()) &&
("TH".equals(aLocale.getCountry()))) {
return new sun.util.BuddhistCalendar(zone, aLocale);
}
return new GregorianCalendar(zone, aLocale);
}
public GregorianCalendar(TimeZone zone, Locale aLocale) {
super(zone, aLocale);
gdate = (BaseCalendar.Date) gcal.newCalendarDate(zone);
setTimeInMillis(System.currentTimeMillis());
}
Have you got it? Calendar.getInstance() checks TimeZone, Locale and of course System.currentTimeMillis(). So, it's an expensive operation.Another bad example:
Date date = new Date(System.currentTimeMillis());
Why is it bad? Because, it should be as simple as:Date date = new Date();
And, here is the apidoc of default constructor of Date:Allocates a Date object and initializes it so that
it represents the time at which it was allocated,
measured to the nearest millisecond.
Yet, another bad example:Date date = Calendar.getInstance().getTime();
Now, when should we use System.currentTimeMillis():When we need only the millisecond representation of the current time.
When should we use
Date: When we need a date object representing the current time.When should we use
Calendar.getInstance(): When we need TimeZone orLocale specific information. Another use of Calender can be for creating constant Date object:public static final Date INDEPENDENCE_DAY;
static {
Calendar calendar = Calendar.getInstance();
calendar.set(1971, Calendar.MARCH, 26);
INDEPENDENCE_DAY = calendar.getTime();
}
Comments
Post a Comment