Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60201f2b authored by Christopher Tate's avatar Christopher Tate
Browse files

XML parsing optimizations

Traceview showed approximately 10% of total parse time inside the
synthetic 'trampoline' methods generated to provide inner classes
with access to their outer class's private fields.  The bottleneck
in this particular case is in XmlBlock and its inner class Parser.

Making the bottlneck outer-class members and methods package-scope
instead of private removes that 10% overhead being spent within
these access trampolines.

Traceview tends to overemphasize the significance of very small
methods such as these trampolines.  That said, the measured speed
gain on the ParseLargeXmlResFg op due to this patch is between
5% and 6%.

Change-Id: Ia0e3ae5408d1f9992b46e6e30dd2407090379b07
parent d400d03f
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -484,7 +484,7 @@ final class XmlBlock {

    private final AssetManager mAssets;
    private final int mNative;
    private final StringBlock mStrings;
    /*package*/ final StringBlock mStrings;
    private boolean mOpen = true;
    private int mOpenCount = 1;

@@ -494,9 +494,9 @@ final class XmlBlock {
    private static final native int nativeGetStringBlock(int obj);

    private static final native int nativeCreateParseState(int obj);
    private static final native int nativeNext(int state);
    /*package*/ static final native int nativeNext(int state);
    private static final native int nativeGetNamespace(int state);
    private static final native int nativeGetName(int state);
    /*package*/ static final native int nativeGetName(int state);
    private static final native int nativeGetText(int state);
    private static final native int nativeGetLineNumber(int state);
    private static final native int nativeGetAttributeCount(int state);