blob: 3c2d6d1fb5278cc032735aa0ad943827d41617f8 [file] [log] [blame]
/*
* Copyright 2001-2005 Stephen Colebourne
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.joda.example.time;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.joda.time.DateTime;
import org.joda.time.MutableDateTime;
import org.joda.time.chrono.GJChronology;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
/**
* DateTimePerformance provides various comparisons between the Java supplied
* Date classes and the Joda ones.
*
* @author Stephen Colebourne
*/
public class DateTimePerformance {
private static class Result {
String object = null;
String name = null;
long time = 0;
long avg = 0;
int runs = 0;
}
private static int AVERAGE = 3;
private static int COUNT_VERY_FAST = 5000000;
private static int COUNT_FAST = 200000;
private static int COUNT_SLOW = 20000;
private Map results = new HashMap();
private List resultList = new ArrayList();
private Result result = null;
private long start = 0;
private long end = 0;
/**
* Constructor
*/
public static void main(String[] args) {
try {
new DateTimePerformance();
} catch (Throwable th) {
th.printStackTrace();
}
}
/**
* Constructor
*/
public DateTimePerformance() throws Exception {
checkJodaConstructor1();
checkJISOConstructor1();
checkGCalConstructor1();
checkDateConstructor1();
checkJodaConstructor2();
checkJISOConstructor2();
checkGCalConstructor2();
checkDateConstructor2();
checkJodaConstructor3();
checkJISOConstructor3();
checkGCalConstructor3();
checkDateConstructor3();
checkJodaGetYear();
checkJISOGetYear();
checkGCalGetYear();
checkDateGetYear();
// checkJodaGetMonth();
// checkJISOGetMonth();
// checkGCalGetMonth();
// checkDateGetMonth();
// checkJodaGetDay();
// checkJISOGetDay();
// checkGCalGetDay();
// checkDateGetDay();
checkJodaGetHour();
checkJISOGetHour();
checkGCalGetHour();
checkDateGetHour();
checkJodaSetYear();
checkJISOSetYear();
checkGCalSetYear();
checkDateSetYear();
checkJodaSetGetYear();
checkJISOSetGetYear();
checkGCalSetGetYear();
checkDateSetGetYear();
checkJodaSetHour();
checkJISOSetHour();
checkGCalSetHour();
checkDateSetHour();
checkJodaSetGetHour();
checkJISOSetGetHour();
checkGCalSetGetHour();
checkDateSetGetHour();
checkJodaToString();
checkJISOToString();
checkGCalToString();
checkDateToString();
System.out.println("");
long jodaTotal = 0;
long jisoTotal = 0;
long gcalTotal = 0;
long dateTotal = 0;
for (Iterator it = resultList.iterator(); it.hasNext();) {
Result res = (Result) it.next();
System.out.println(res.object + "." + res.name + ": " + res.avg + "ns");
if (res.object.equals("Joda")) {
jodaTotal += res.avg;
} else if (res.object.equals("JISO")) {
jisoTotal += res.avg;
} else if (res.object.equals("GCal")) {
gcalTotal += res.avg;
} else if (res.object.equals("Date")) {
dateTotal += res.avg;
System.out.println("");
}
}
System.out.println("Joda: " + jodaTotal);
System.out.println("JISO: " + jisoTotal);
System.out.println("GCal: " + gcalTotal);
System.out.println("Date: " + dateTotal);
}
// Constructor using currentTimeMillis()
//------------------------------------------------------------------------
private void checkJodaConstructor1() {
int COUNT = COUNT_SLOW;
DateTime dt = new DateTime(GJChronology.getInstance());
int count = 0;
for (int i = 0; i < AVERAGE; i++) {
start("Joda", "new()");
for (int j = 0; j < COUNT; j++) {
dt = new DateTime(GJChronology.getInstance());
if (count++ < 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkJISOConstructor1() {
int COUNT = COUNT_SLOW;
DateTime dt = new DateTime();
int count = 0;
for (int i = 0; i < AVERAGE; i++) {
start("JISO", "new()");
for (int j = 0; j < COUNT; j++) {
dt = new DateTime();
if (count++ < 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkGCalConstructor1() {
int COUNT = COUNT_SLOW;
GregorianCalendar dt = new GregorianCalendar();
int count = 0;
for (int i = 0; i < AVERAGE; i++) {
start("GCal", "new()");
for (int j = 0; j < COUNT; j++) {
dt = new GregorianCalendar();
if (count++ < 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkDateConstructor1() {
int COUNT = COUNT_SLOW;
Date dt = new Date();
int count = 0;
for (int i = 0; i < AVERAGE; i++) {
start("Date", "new()");
for (int j = 0; j < COUNT; j++) {
dt = new Date();
if (count++ < 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
// Constructor using long millis
//------------------------------------------------------------------------
private void checkJodaConstructor2() {
int COUNT = COUNT_VERY_FAST;
DateTime dt = new DateTime(12345L, GJChronology.getInstance());
for (int i = 0; i < AVERAGE; i++) {
start("Joda", "new(millis)");
for (int j = 0; j < COUNT; j++) {
dt = new DateTime(12345L, GJChronology.getInstance());
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkJISOConstructor2() {
int COUNT = COUNT_VERY_FAST;
DateTime dt = new DateTime(12345L);
for (int i = 0; i < AVERAGE; i++) {
start("JISO", "new(millis)");
for (int j = 0; j < COUNT; j++) {
dt = new DateTime(12345L);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkGCalConstructor2() {
int COUNT = COUNT_SLOW;
GregorianCalendar dt = new GregorianCalendar();
for (int i = 0; i < AVERAGE; i++) {
start("GCal", "new(millis)");
for (int j = 0; j < COUNT; j++) {
dt = new GregorianCalendar();
dt.setTime(new Date(12345L));
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkDateConstructor2() {
int COUNT = COUNT_VERY_FAST;
Date dt = new Date();
for (int i = 0; i < AVERAGE; i++) {
start("Date", "new(millis)");
for (int j = 0; j < COUNT; j++) {
dt = new Date(12345L);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
// Constructor using year month and day
//------------------------------------------------------------------------
private void checkJodaConstructor3() {
int COUNT = COUNT_SLOW;
DateTime dt = new DateTime(1972, 10, 1, 0, 0, 0, 0,
GJChronology.getInstance());
for (int i = 0; i < AVERAGE; i++) {
start("Joda", "new(YMD)");
for (int j = 0; j < COUNT; j++) {
dt = new DateTime(1972, 10, 1, 0, 0, 0, 0,
GJChronology.getInstance());
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkJISOConstructor3() {
int COUNT = COUNT_SLOW;
DateTime dt = new DateTime(1972, 10, 1, 0, 0, 0, 0);
for (int i = 0; i < AVERAGE; i++) {
start("JISO", "new(YMD)");
for (int j = 0; j < COUNT; j++) {
dt = new DateTime(1972, 10, 1, 0, 0, 0, 0);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkGCalConstructor3() {
int COUNT = COUNT_SLOW;
GregorianCalendar dt = new GregorianCalendar(1972, 10, 1);
for (int i = 0; i < AVERAGE; i++) {
start("GCal", "new(YMD)");
for (int j = 0; j < COUNT; j++) {
dt = new GregorianCalendar(1972, 10, 1);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkDateConstructor3() {
int COUNT = COUNT_SLOW;
Date dt = new Date();
for (int i = 0; i < AVERAGE; i++) {
start("Date", "new(YMD)");
for (int j = 0; j < COUNT; j++) {
dt = new Date(1972, 10, 1);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
// Get year
//------------------------------------------------------------------------
private void checkJodaGetYear() {
int COUNT = COUNT_VERY_FAST;
DateTime dt = new DateTime(GJChronology.getInstance());
for (int i = 0; i < AVERAGE; i++) {
start("Joda", "getYear");
for (int j = 0; j < COUNT; j++) {
int val = dt.getYear();
if (val == 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkJISOGetYear() {
int COUNT = COUNT_VERY_FAST;
DateTime dt = new DateTime();
for (int i = 0; i < AVERAGE; i++) {
start("JISO", "getYear");
for (int j = 0; j < COUNT; j++) {
int val = dt.getYear();
if (val == 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkGCalGetYear() {
int COUNT = COUNT_VERY_FAST;
GregorianCalendar dt = new GregorianCalendar();
for (int i = 0; i < AVERAGE; i++) {
start("GCal", "getYear");
for (int j = 0; j < COUNT; j++) {
int val = dt.get(GregorianCalendar.YEAR);
if (val == 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkDateGetYear() {
int COUNT = COUNT_FAST;
Date dt = new Date();
for (int i = 0; i < AVERAGE; i++) {
start("Date", "getYear");
for (int j = 0; j < COUNT; j++) {
int val = dt.getYear();
if (val == 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
// Get month
//------------------------------------------------------------------------
private void checkJodaGetMonth() {
int COUNT = COUNT_VERY_FAST;
DateTime dt = new DateTime(GJChronology.getInstance());
for (int i = 0; i < AVERAGE; i++) {
start("Joda", "getMonth");
for (int j = 0; j < COUNT; j++) {
int val = dt.getMonthOfYear();
if (val == 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkJISOGetMonth() {
int COUNT = COUNT_VERY_FAST;
DateTime dt = new DateTime();
for (int i = 0; i < AVERAGE; i++) {
start("JISO", "getMonth");
for (int j = 0; j < COUNT; j++) {
int val = dt.getMonthOfYear();
if (val == 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkGCalGetMonth() {
int COUNT = COUNT_VERY_FAST;
GregorianCalendar dt = new GregorianCalendar();
for (int i = 0; i < AVERAGE; i++) {
start("GCal", "getMonth");
for (int j = 0; j < COUNT; j++) {
int val = dt.get(GregorianCalendar.MONTH);
if (val == 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkDateGetMonth() {
int COUNT = COUNT_FAST;
Date dt = new Date();
for (int i = 0; i < AVERAGE; i++) {
start("Date", "getMonth");
for (int j = 0; j < COUNT; j++) {
int val = dt.getMonth();
if (val == 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
// Get day
//------------------------------------------------------------------------
private void checkJodaGetDay() {
int COUNT = COUNT_VERY_FAST;
DateTime dt = new DateTime(GJChronology.getInstance());
for (int i = 0; i < AVERAGE; i++) {
start("Joda", "getDay");
for (int j = 0; j < COUNT; j++) {
int val = dt.getDayOfMonth();
if (val == 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkJISOGetDay() {
int COUNT = COUNT_VERY_FAST;
DateTime dt = new DateTime();
for (int i = 0; i < AVERAGE; i++) {
start("JISO", "getDay");
for (int j = 0; j < COUNT; j++) {
int val = dt.getDayOfMonth();
if (val == 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkGCalGetDay() {
int COUNT = COUNT_VERY_FAST;
GregorianCalendar dt = new GregorianCalendar();
for (int i = 0; i < AVERAGE; i++) {
start("GCal", "getDay");
for (int j = 0; j < COUNT; j++) {
int val = dt.get(GregorianCalendar.DAY_OF_MONTH);
if (val == 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkDateGetDay() {
int COUNT = COUNT_FAST;
Date dt = new Date();
for (int i = 0; i < AVERAGE; i++) {
start("Date", "getDay");
for (int j = 0; j < COUNT; j++) {
int val = dt.getDate();
if (val == 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
// Get hour
//------------------------------------------------------------------------
private void checkJodaGetHour() {
int COUNT = COUNT_VERY_FAST;
DateTime dt = new DateTime(GJChronology.getInstance());
for (int i = 0; i < AVERAGE; i++) {
start("Joda", "getHour");
for (int j = 0; j < COUNT; j++) {
int val = dt.getHourOfDay();
if (val == -1) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkJISOGetHour() {
int COUNT = COUNT_VERY_FAST;
DateTime dt = new DateTime();
for (int i = 0; i < AVERAGE; i++) {
start("JISO", "getHour");
for (int j = 0; j < COUNT; j++) {
int val = dt.getHourOfDay();
if (val == -1) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkGCalGetHour() {
int COUNT = COUNT_VERY_FAST;
GregorianCalendar dt = new GregorianCalendar();
for (int i = 0; i < AVERAGE; i++) {
start("GCal", "getHour");
for (int j = 0; j < COUNT; j++) {
int val = dt.get(GregorianCalendar.HOUR_OF_DAY);
if (val == -1) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkDateGetHour() {
int COUNT = COUNT_FAST;
Date dt = new Date();
for (int i = 0; i < AVERAGE; i++) {
start("Date", "getHour");
for (int j = 0; j < COUNT; j++) {
int val = dt.getHours();
if (val == -1) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
// Set year
//------------------------------------------------------------------------
private void checkJodaSetYear() {
int COUNT = COUNT_FAST;
// Is it fair to use only MutableDateTime here? You decide.
MutableDateTime dt = new MutableDateTime(GJChronology.getInstance());
for (int i = 0; i < AVERAGE; i++) {
start("Joda", "setYear");
for (int j = 0; j < COUNT; j++) {
dt.setYear(1972);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkJISOSetYear() {
int COUNT = COUNT_FAST;
// Is it fair to use only MutableDateTime here? You decide.
MutableDateTime dt = new MutableDateTime();
for (int i = 0; i < AVERAGE; i++) {
start("JISO", "setYear");
for (int j = 0; j < COUNT; j++) {
dt.setYear(1972);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkGCalSetYear() {
int COUNT = COUNT_VERY_FAST;
GregorianCalendar dt = new GregorianCalendar();
for (int i = 0; i < AVERAGE; i++) {
start("GCal", "setYear");
for (int j = 0; j < COUNT; j++) {
dt.set(GregorianCalendar.YEAR, 1972);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkDateSetYear() {
int COUNT = COUNT_FAST;
Date dt = new Date();
for (int i = 0; i < AVERAGE; i++) {
start("Date", "setYear");
for (int j = 0; j < COUNT; j++) {
dt.setYear(1972);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
// Set then get year
//------------------------------------------------------------------------
private void checkJodaSetGetYear() {
int COUNT = COUNT_FAST;
// Is it fair to use only MutableDateTime here? You decide.
// MutableDateTime dt = new MutableDateTime(GJChronology.getInstance());
// for (int i = 0; i < AVERAGE; i++) {
// start("Joda", "setGetYear");
// for (int j = 0; j < COUNT; j++) {
// dt.setYear(1972);
// int val = dt.getYear();
// if (val < 0) {System.out.println("Anti optimise");}
// }
// end(COUNT);
// }
DateTime dt = new DateTime(GJChronology.getInstance());
for (int i = 0; i < AVERAGE; i++) {
start("Joda", "setGetYear");
for (int j = 0; j < COUNT; j++) {
dt = dt.year().setCopy(1972);
int val = dt.getYear();
if (val < 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkJISOSetGetYear() {
int COUNT = COUNT_FAST;
// Is it fair to use only MutableDateTime here? You decide.
// MutableDateTime dt = new MutableDateTime();
// for (int i = 0; i < AVERAGE; i++) {
// start("JISO", "setGetYear");
// for (int j = 0; j < COUNT; j++) {
// dt.setYear(1972);
// int val = dt.getYear();
// if (val < 0) {System.out.println("Anti optimise");}
// }
// end(COUNT);
// }
DateTime dt = new DateTime();
for (int i = 0; i < AVERAGE; i++) {
start("JISO", "setGetYear");
for (int j = 0; j < COUNT; j++) {
dt = dt.year().setCopy(1972);
int val = dt.getYear();
if (val < 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkGCalSetGetYear() {
int COUNT = COUNT_FAST;
GregorianCalendar dt = new GregorianCalendar();
for (int i = 0; i < AVERAGE; i++) {
start("GCal", "setGetYear");
for (int j = 0; j < COUNT; j++) {
dt.set(GregorianCalendar.YEAR, 1972);
int val = dt.get(GregorianCalendar.YEAR);
if (val < 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkDateSetGetYear() {
int COUNT = COUNT_FAST;
Date dt = new Date();
for (int i = 0; i < AVERAGE; i++) {
start("Date", "setGetYear");
for (int j = 0; j < COUNT; j++) {
dt.setYear(1972);
int val = dt.getYear();
if (val < 0) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
// Set hour
//------------------------------------------------------------------------
private void checkJodaSetHour() {
int COUNT = COUNT_VERY_FAST;
// Is it fair to use only MutableDateTime here? You decide.
MutableDateTime dt = new MutableDateTime(GJChronology.getInstance());
for (int i = 0; i < AVERAGE; i++) {
start("Joda", "setHour");
for (int j = 0; j < COUNT; j++) {
dt.setHourOfDay(13);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkJISOSetHour() {
int COUNT = COUNT_VERY_FAST;
// Is it fair to use only MutableDateTime here? You decide.
MutableDateTime dt = new MutableDateTime();
for (int i = 0; i < AVERAGE; i++) {
start("JISO", "setHour");
for (int j = 0; j < COUNT; j++) {
dt.setHourOfDay(13);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkGCalSetHour() {
int COUNT = COUNT_VERY_FAST;
GregorianCalendar dt = new GregorianCalendar();
for (int i = 0; i < AVERAGE; i++) {
start("GCal", "setHour");
for (int j = 0; j < COUNT; j++) {
dt.set(GregorianCalendar.HOUR_OF_DAY, 13);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkDateSetHour() {
int COUNT = COUNT_FAST;
Date dt = new Date();
for (int i = 0; i < AVERAGE; i++) {
start("Date", "setHour");
for (int j = 0; j < COUNT; j++) {
dt.setHours(13);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
// Set hour
//------------------------------------------------------------------------
private void checkJodaSetGetHour() {
int COUNT = COUNT_VERY_FAST;
// Is it fair to use only MutableDateTime here? You decide.
MutableDateTime dt = new MutableDateTime(GJChronology.getInstance());
for (int i = 0; i < AVERAGE; i++) {
start("Joda", "setGetHour");
for (int j = 0; j < COUNT; j++) {
dt.setHourOfDay(13);
int val = dt.getHourOfDay();
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkJISOSetGetHour() {
int COUNT = COUNT_VERY_FAST;
// Is it fair to use only MutableDateTime here? You decide.
MutableDateTime dt = new MutableDateTime();
for (int i = 0; i < AVERAGE; i++) {
start("JISO", "setGetHour");
for (int j = 0; j < COUNT; j++) {
dt.setHourOfDay(13);
int val = dt.getHourOfDay();
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkGCalSetGetHour() {
int COUNT = COUNT_VERY_FAST;
GregorianCalendar dt = new GregorianCalendar();
for (int i = 0; i < AVERAGE; i++) {
start("GCal", "setGetHour");
for (int j = 0; j < COUNT; j++) {
dt.set(GregorianCalendar.HOUR_OF_DAY, 13);
int val = dt.get(GregorianCalendar.HOUR_OF_DAY);
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkDateSetGetHour() {
int COUNT = COUNT_FAST;
Date dt = new Date();
for (int i = 0; i < AVERAGE; i++) {
start("Date", "setGetHour");
for (int j = 0; j < COUNT; j++) {
dt.setHours(13);
int val = dt.getHours();
if (dt == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
// To formatted string
//------------------------------------------------------------------------
private void checkJodaToString() {
int COUNT = COUNT_SLOW;
DateTime dt = new DateTime(GJChronology.getInstance());
DateTimeFormatter f = DateTimeFormat.forPattern("dd MMM yyyy");
for (int i = 0; i < AVERAGE; i++) {
start("Joda", "toString");
for (int j = 0; j < COUNT; j++) {
String str = dt.toString("dd MMM yyyy");
// String str = dt.toString(f);
if (str == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkJISOToString() {
int COUNT = COUNT_SLOW;
DateTime dt = new DateTime();
DateTimeFormatter f = DateTimeFormat.forPattern("dd MMM yyyy");
for (int i = 0; i < AVERAGE; i++) {
start("JISO", "toString");
for (int j = 0; j < COUNT; j++) {
String str = dt.toString("dd MMM yyyy");
// String str = dt.toString(f);
if (str == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkGCalToString() {
int COUNT = COUNT_SLOW;
GregorianCalendar dt = new GregorianCalendar();
for (int i = 0; i < AVERAGE; i++) {
start("GCal", "toString");
for (int j = 0; j < COUNT; j++) {
SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy");
String str = sdf.format(dt.getTime());
if (str == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
private void checkDateToString() {
int COUNT = COUNT_SLOW;
Date dt = new Date();
for (int i = 0; i < AVERAGE; i++) {
start("Date", "toString");
for (int j = 0; j < COUNT; j++) {
SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy");
String str = sdf.format(dt);
if (str == null) {System.out.println("Anti optimise");}
}
end(COUNT);
}
}
//------------------------------------------------------------------------
/**
* Start the stopwatch.
*/
private void start(String str1, String str2) {
result = (Result) results.get(str1 + str2);
if (result == null) {
result = new Result();
result.object = str1;
result.name = str2;
results.put(str1 + str2, result);
resultList.add(result);
}
start = System.currentTimeMillis();
}
/**
* End the stopwatch and print the result.
*/
private void end(int count) {
end = System.currentTimeMillis();
long time = (end - start);
result.time = result.time + time;
result.runs = result.runs + count;
result.avg = (result.time * 1000000) / result.runs;
System.out.print(".");
}
}