d8b80f961a
This pull requests complements pull request #2178 by reducing general computational time for the method getTimeString. On my local machine (Desktop PC with Java) my tests with a sample size of 10000 calls to the method with param 86400001 showed a performance improvement of about 50%. See sample code below to reproduce: private static final StringBuilder stringBuilder = new StringBuilder(); private static final Formatter stringFormatter = new Formatter(stringBuilder, Locale.getDefault()); public static String getTimeString(int milliSeconds) { int seconds = (milliSeconds % 60000) / 1000; int minutes = (milliSeconds % 3600000) / 60000; int hours = (milliSeconds % 86400000) / 3600000; int days = (milliSeconds % (86400000 * 7)) / 86400000; stringBuilder.setLength(0); return days > 0 ? stringFormatter.format("%d:%02d:%02d:%02d", days, hours, minutes, seconds).toString() : hours > 0 ? stringFormatter.format("%d:%02d:%02d", hours, minutes, seconds).toString() : stringFormatter.format("%02d:%02d", minutes, seconds).toString(); } public static String getTimeStringL(int milliSeconds) { long seconds = (milliSeconds % 60000L) / 1000L; long minutes = (milliSeconds % 3600000L) / 60000L; long hours = (milliSeconds % 86400000L) / 3600000L; long days = (milliSeconds % (86400000L * 7L)) / 86400000L; stringBuilder.setLength(0); return days > 0 ? stringFormatter.format("%d:%02d:%02d:%02d", days, hours, minutes, seconds).toString() : hours > 0 ? stringFormatter.format("%d:%02d:%02d", hours, minutes, seconds).toString() : stringFormatter.format("%02d:%02d", minutes, seconds).toString(); } public static void main(String[] args) throws Exception { final int SAMPLE_SIZE = 25000; long[] results = new long[SAMPLE_SIZE]; for(int i = 0; i < SAMPLE_SIZE; i++) { long now = System.nanoTime(); getTimeString(86400001); results[i] = System.nanoTime() - now; } long sum = 0; for(int i = 0; i < SAMPLE_SIZE; i++) { sum += results[i]; } System.out.println("Average execution time: " + (sum/SAMPLE_SIZE)); results = new long[SAMPLE_SIZE]; for(int i = 0; i < SAMPLE_SIZE; i++) { long now = System.nanoTime(); getTimeStringL(86400001); results[i] = System.nanoTime() - now; } sum = 0; for(int i = 0; i < SAMPLE_SIZE; i++) { sum += results[i]; } System.out.println("Average execution time: " + (sum/SAMPLE_SIZE)); |
||
---|---|---|
.. | ||
src | ||
.gitignore | ||
build.gradle | ||
proguard-rules.pro |