mendhak / gpslogger

:satellite: Lightweight GPS Logging Application For Android.
https://gpslogger.app
Other
1.96k stars 605 forks source link

Suggestion: Improvement of Java Autoboxing and Unboxing #708

Closed o0lwj0o closed 5 years ago

o0lwj0o commented 5 years ago

Hi, I have found some usage of “int a = Integer.valueOf(String)” in this project. In fact the return type of “Integer.valueOf()” is “Integer” which is wrapper class. Wrapper class stores in the heap rather than stack. It take more time to loopup. The other potential problem is that Java implement autoboxing and unboxing since JDK 1.5. If run this in low version JDK, it may get trouble. Furthermore, in the above case, it need to cast Integer to int. I recommend use “Integer.parseInt(String)” which return type is int to improve its performance.

PS: This case also applies to “double-Doubel”, “float-Float”, “long-Long” and so on.

Detail websites and lines are listed below

Integer.valueOf() 1046 1047 1133 | https://github.com/mendhak/gpslogger/blob/master/gpslogger/src/main/java/com/mendhak/gpslogger/GpsMainActivity.java 130 | https://github.com/mendhak/gpslogger/blob/master/gpslogger/src/main/java/com/mendhak/gpslogger/ui/fragments/settings/AutoEmailFragment.java 146 183 | https://github.com/mendhak/gpslogger/blob/master/gpslogger/src/main/java/com/mendhak/gpslogger/common/Session.java

Float.valueOf()
according to Math.round(float a) 745 | https://github.com/mendhak/gpslogger/blob/master/gpslogger/src/main/java/com/mendhak/gpslogger/common/PreferenceHelper.java  272 | https://github.com/mendhak/gpslogger/blob/master/gpslogger/src/main/java/com/mendhak/gpslogger/common/Session.java  34 | https://github.com/mendhak/gpslogger/blob/master/gpslogger/src/main/java/com/mendhak/gpslogger/common/Locations.java

Double.valueOf() 179 | https://github.com/mendhak/gpslogger/blob/master/gpslogger/src/main/java/com/mendhak/gpslogger/common/Session.java

Long.valueOf() 230 345 357 | https://github.com/mendhak/gpslogger/blob/master/gpslogger/src/main/java/com/mendhak/gpslogger/common/Session.java

Best regards

mendhak commented 5 years ago

Thanks for reviewing - coming from C# I've not had to consider the difference between int and Integer for example.

Pushed to master branch, in this commit

mendhak commented 5 years ago

v100 has been released to market.