Hey everyone, Java Date object creation seems much slower in Android 1.6/2.0 than in Android 1.5. My application experienced about two orders of magnitude of slowdown for certain Date intense operations.
I have reduced the number of Date and Calendar object instances required to do this math, but my application is still many times slower than it was on Android 1.5. If I build for Android 1.5 devices with my current version of the framework, it is still slower. I am making an application where I need to calculate how long ago certain People checked in on a web service. I get the checkin events from a web server I don't control, and they have date information formatted in a string. To get all my objects, I do this: private Vector<Person> parseMapUpdate(String result) { ... Date now = new Date(); for (String person_string : people_strings) { people_vector.add(new Person(person_string, now)); Log.d(LOG, "Made a Person."); } return people_vector; } ... Class Person { public static final DateFormat kDateFormat = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); ... private void setTimeDelta(Date now) { Date then = now; try { then = kDateFormat.parse(mTime); } catch (ParseException e) { Log.e(LOG, "Bad time! Tried to parse " + mTime); } mTimeDelta = (now.getTime() - then.getTime()) / 60000; //60k is a minute in milliseconds } } I am passing in the "Date now" because I found it to be substantially faster than instantiating a new one for every object. On my emulator, doing this sixty times takes about 1 second. On the phone, it takes hundreds of miliseconds per Person that I create. 10-28 00:29:18.508: VERBOSE/MauradersMapAPI(2887): <snip successful data retrieval> 10-28 00:29:18.808: INFO/ActivityManager(85): Stopping service: com.android.providers.downloads/.DownloadService 10-28 00:29:18.808: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:19.478: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:19.788: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:19.788: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:20.028: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:20.028: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:20.248: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:20.468: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:20.468: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:20.698: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:20.878: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:20.878: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:21.148: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:21.148: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:21.368: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:21.588: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:21.588: DEBUG/MauradersMapAPI(2887): Got Map 1 10-28 00:29:22.198: DEBUG/dalvikvm(2887): GC freed 2595 objects / 169296 bytes in 228ms 10-28 00:29:22.828: VERBOSE/MauradersMapAPI(2887): <snip, successful data retrieval> 10-28 00:29:23.058: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:23.058: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:23.288: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:23.528: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:23.528: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:23.788: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:23.788: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:24.028: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:24.268: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:24.268: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:24.488: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:24.488: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:24.718: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:24.908: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:25.048: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:25.268: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:25.268: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:25.548: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:25.688: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:25.868: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:25.868: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:26.078: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:26.078: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:26.308: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:26.548: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:26.548: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:26.768: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:26.768: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:27.008: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:27.258: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:27.258: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:27.488: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:27.708: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:27.708: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:27.938: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:28.108: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:28.218: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:28.218: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:28.458: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:28.918: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:28.918: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:31.528: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:31.528: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:31.898: DEBUG/dalvikvm(432): GC freed 5038 objects / 289488 bytes in 3209ms 10-28 00:29:31.968: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:32.188: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:32.188: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:32.378: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:32.538: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:32.768: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:32.768: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:33.008: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:33.008: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:33.228: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:33.418: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:33.418: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:33.878: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:35.908: DEBUG/dalvikvm(330): GC freed 141 objects / 10680 bytes in 2267ms 10-28 00:29:35.948: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:35.948: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:36.168: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:36.168: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:36.438: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:36.668: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:36.668: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:37.418: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:37.548: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:37.548: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:37.778: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:37.978: DEBUG/MauradersMapAPI(2887): Made a Person. 10-28 00:29:37.978: DEBUG/MauradersMapAPI(2887): Got Map 2 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---