mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2024-11-18 15:54:58 +00:00
Improved performance of getTimeString
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));
This commit is contained in:
parent
15eb7f3186
commit
d8b80f961a
@ -70,10 +70,10 @@ public class PlayerHelper {
|
|||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
public static String getTimeString(int milliSeconds) {
|
public static String getTimeString(int milliSeconds) {
|
||||||
long seconds = (milliSeconds % 60000L) / 1000L;
|
int seconds = (milliSeconds % 60000) / 1000;
|
||||||
long minutes = (milliSeconds % 3600000L) / 60000L;
|
int minutes = (milliSeconds % 3600000) / 60000;
|
||||||
long hours = (milliSeconds % 86400000L) / 3600000L;
|
int hours = (milliSeconds % 86400000) / 3600000;
|
||||||
long days = (milliSeconds % (86400000L * 7L)) / 86400000L;
|
int days = (milliSeconds % (86400000 * 7)) / 86400000;
|
||||||
|
|
||||||
stringBuilder.setLength(0);
|
stringBuilder.setLength(0);
|
||||||
return days > 0 ? stringFormatter.format("%d:%02d:%02d:%02d", days, hours, minutes, seconds).toString()
|
return days > 0 ? stringFormatter.format("%d:%02d:%02d:%02d", days, hours, minutes, seconds).toString()
|
||||||
|
Loading…
Reference in New Issue
Block a user