diff options
| -rw-r--r-- | core/java/android/content/pm/PackageParser.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 69e3369ccba1..e8eca8ca7aa2 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -64,6 +64,7 @@ import android.os.FileUtils; import android.os.Parcel; import android.os.Parcelable; import android.os.PatternMatcher; +import android.os.SystemClock; import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; @@ -145,6 +146,8 @@ public class PackageParser { private static final boolean DEBUG_JAR = false; private static final boolean DEBUG_PARSER = false; private static final boolean DEBUG_BACKUP = false; + private static final boolean LOG_PARSE_TIMINGS = Build.IS_DEBUGGABLE; + private static final int LOG_PARSE_TIMINGS_THRESHOLD_MS = 100; private static final String PROPERTY_CHILD_PACKAGES_ENABLED = "persist.sys.child_packages_enabled"; @@ -993,14 +996,23 @@ public class PackageParser { return parsed; } + long parseTime = LOG_PARSE_TIMINGS ? SystemClock.uptimeMillis() : 0; if (packageFile.isDirectory()) { parsed = parseClusterPackage(packageFile, flags); } else { parsed = parseMonolithicPackage(packageFile, flags); } + long cacheTime = LOG_PARSE_TIMINGS ? SystemClock.uptimeMillis() : 0; cacheResult(packageFile, flags, parsed); - + if (LOG_PARSE_TIMINGS) { + parseTime = cacheTime - parseTime; + cacheTime = SystemClock.uptimeMillis() - cacheTime; + if (parseTime + cacheTime > LOG_PARSE_TIMINGS_THRESHOLD_MS) { + Slog.i(TAG, "Parse times for '" + packageFile + "': parse=" + parseTime + + "ms, update_cache=" + cacheTime + " ms"); + } + } return parsed; } |