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

Commit 340a1b21 authored by Grace Kloba's avatar Grace Kloba
Browse files

Fix the performance collection in the http thread. A connection can be reused....

Fix the performance collection in the http thread. A connection can be reused. Change the thread time collection based on per request.
parent 8529fc3a
Loading
Loading
Loading
Loading
+21 −7
Original line number Diff line number Diff line
@@ -32,8 +32,8 @@ class ConnectionThread extends Thread {
    static final int WAIT_TICK = 1000;

    // Performance probe
    long mStartThreadTime;
    long mCurrentThreadTime;
    long mTotalThreadTime;

    private boolean mWaiting;
    private volatile boolean mRunning = true;
@@ -71,10 +71,18 @@ class ConnectionThread extends Thread {
        android.os.Process.setThreadPriority(
                android.os.Process.THREAD_PRIORITY_LESS_FAVORABLE);

        mStartThreadTime = -1;
        mCurrentThreadTime = SystemClock.currentThreadTimeMillis();
        // these are used to get performance data. When it is not in the timing,
        // mCurrentThreadTime is 0. When it starts timing, mCurrentThreadTime is
        // first set to -1, it will be set to the current thread time when the
        // next request starts.
        mCurrentThreadTime = 0;
        mTotalThreadTime = 0;

        while (mRunning) {
            if (mCurrentThreadTime == -1) {
                mCurrentThreadTime = SystemClock.currentThreadTimeMillis();
            }

            Request request;

            /* Get a request to process */
@@ -86,14 +94,14 @@ class ConnectionThread extends Thread {
                    if (HttpLog.LOGV) HttpLog.v("ConnectionThread: Waiting for work");
                    mWaiting = true;
                    try {
                        if (mStartThreadTime != -1) {
                            mCurrentThreadTime = SystemClock
                                    .currentThreadTimeMillis();
                        }
                        mRequestFeeder.wait();
                    } catch (InterruptedException e) {
                    }
                    mWaiting = false;
                    if (mCurrentThreadTime != 0) {
                        mCurrentThreadTime = SystemClock
                                .currentThreadTimeMillis();
                    }
                }
            } else {
                if (HttpLog.LOGV) HttpLog.v("ConnectionThread: new request " +
@@ -123,6 +131,12 @@ class ConnectionThread extends Thread {
                    mConnection.closeConnection();
                }
                mConnection = null;

                if (mCurrentThreadTime > 0) {
                    long start = mCurrentThreadTime;
                    mCurrentThreadTime = SystemClock.currentThreadTimeMillis();
                    mTotalThreadTime += mCurrentThreadTime - start;
                }
            }

        }
+8 −4
Original line number Diff line number Diff line
@@ -279,7 +279,9 @@ public class RequestQueue implements RequestFeeder {

        public void startTiming() {
            for (int i = 0; i < mConnectionCount; i++) {
                mThreads[i].mStartThreadTime = mThreads[i].mCurrentThreadTime;
                ConnectionThread rt = mThreads[i];
                rt.mCurrentThreadTime = -1;
                rt.mTotalThreadTime = 0;
            }
            mTotalRequest = 0;
            mTotalConnection = 0;
@@ -289,12 +291,14 @@ public class RequestQueue implements RequestFeeder {
            int totalTime = 0;
            for (int i = 0; i < mConnectionCount; i++) {
                ConnectionThread rt = mThreads[i];
                totalTime += (rt.mCurrentThreadTime - rt.mStartThreadTime);
                rt.mStartThreadTime = -1;
                if (rt.mCurrentThreadTime != -1) {
                    totalTime += rt.mTotalThreadTime;
                }
                rt.mCurrentThreadTime = 0;
            }
            Log.d("Http", "Http thread used " + totalTime + " ms " + " for "
                    + mTotalRequest + " requests and " + mTotalConnection
                    + " connections");
                    + " new connections");
        }

        void logState() {