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
-~----------~----~----~----~------~----~------~--~---

Reply via email to