From 1cb8f9a34383bc90e003c2f7614077775d040c42 Mon Sep 17 00:00:00 2001 From: "Hyunjong.park" Date: Thu, 3 Jul 2014 16:09:18 +0900 Subject: [PATCH] opengl : refactoring extract method for better explain makeGLData() measured with the previous code old (Mothod total call count : 130, Roof total count : 232941, total execution time : 54255) new (Mothod total call count : 130, Roof total count : 234061, total execution time : 45943) Change-Id: I765c46a500844d0b0d44967126b93df63c19c5d1 --- .../ui/opengl/data/GLDataManager.java | 197 ++++++++++++++------- .../ui/opengl/table/state/GLContextTable.java | 6 +- 2 files changed, 134 insertions(+), 69 deletions(-) diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLDataManager.java index 8c0e136..2616388 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/data/GLDataManager.java @@ -48,19 +48,19 @@ import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; public class GLDataManager extends PageDataManager { private static GLDataManager instance = null; - private GLStateDataMaker GLStateDataMaker = null; - private List frameRateDataList; + private GLStateDataMaker stateDataMaker = null; + private List frameRateDataList = null; + private List sharingContextList = null; private int startFrameRateTime = 1; private int selectedContextID = -1; - private int currentFrameIndex = 1; + protected int currentFrameIndex = 1; private boolean isSelectFrameRateChart = true; - List sharingContextList = null; private GLAPIDBTableManager apiDBTable = null; private GLFrameRateDBTableManager frameRateDBTable = null; private GLFrameTimeDBTableManager frameTimeDBTable = null; - private GLStateDBTableManager contextDBTable = null; + private GLStateDBTableManager stateDBTable = null; private GLStateProgramDBTableManager stateProgramDBTable = null; private GLStateHistoryDBTableManager stateHistoryDBTable = null; private GLStateTextureDBTableManager stateTextureDBTable = null; @@ -73,17 +73,15 @@ public class GLDataManager extends PageDataManager { return instance; } - private GLDataManager() { - frameRateDataList = new ArrayList(); - GLStateDataMaker = new GLStateDataMaker(); + protected GLDataManager() { apiDBTable = new GLAPIDBTableManager(); addDBTable(apiDBTable); frameRateDBTable = new GLFrameRateDBTableManager(); addDBTable(frameRateDBTable); frameTimeDBTable = new GLFrameTimeDBTableManager(); addDBTable(frameTimeDBTable); - contextDBTable = new GLStateDBTableManager(); - addDBTable(contextDBTable); + stateDBTable = new GLStateDBTableManager(); + addDBTable(stateDBTable); stateProgramDBTable = new GLStateProgramDBTableManager(); addDBTable(stateProgramDBTable); stateHistoryDBTable = new GLStateHistoryDBTableManager(); @@ -94,19 +92,14 @@ public class GLDataManager extends PageDataManager { addDBTable(stateSharingDBTable); } - @Override - protected void makeData(LogPackage pack) { - Logs glesLogs = pack.getLogs(DataChannelConstants.MSG_PROBE_GLES20); - if (glesLogs != null && glesLogs.getRawLogs().size() != 0) { - makeGLData(glesLogs); - } - } - public void clear() { + stateDataMaker = new GLStateDataMaker(); frameRateDataList = new ArrayList(); - GLStateDataMaker.clear(); sharingContextList = new ArrayList(); + startFrameRateTime = 1; + selectedContextID = -1; currentFrameIndex = 1; + isSelectFrameRateChart = true; } public void saveData(Map dataMap) { @@ -118,7 +111,7 @@ public class GLDataManager extends PageDataManager { } public void openProcess() { - updateFrameTimeChartEndTime(); + updateFrameTimeChartEndTimeAtOpen(); stateProgramDBTable.initProgramData(); } @@ -126,25 +119,100 @@ public class GLDataManager extends PageDataManager { stateProgramDBTable.insertData(); } + @Override + protected void makeData(LogPackage pack) { + Logs glesLogs = pack.getLogs(DataChannelConstants.MSG_PROBE_GLES20); + if (glesLogs != null && glesLogs.getRawLogs().size() != 0) { + makeGLData(glesLogs); + } + } + public void makeGLData(Logs glesLogs) { - List> insetFrameTimeChartDataList = new ArrayList>(); - List insetAPIDataList = new ArrayList(); - GLCurrentFrameDataManger currentFrameData = new GLCurrentFrameDataManger(); + addAPIDBData(glesLogs); + addFrameTimeChartDBData(glesLogs); + addFrameRateChartDBData(glesLogs); + addStateDBData(glesLogs); + addFailedAPIData(glesLogs); + updateCurrentFrameIndex(glesLogs); + } + + private void updateCurrentFrameIndex(Logs glesLogs) { for (LogData data : glesLogs.getRawLogs()) { GLES20LogData logData = (GLES20LogData) data; - GLAPIType apiType = new GLAPIType(logData, currentFrameIndex); - GLStateDataMaker.makeStateData(logData, currentFrameIndex); - insetAPIDataList.add(apiType); - currentFrameData.addAPIData(apiType); - checkFailedAPI(logData); if (GLUtil.isLastAPIOfFrame(logData.getApiName())) { - makeFrameTimeData(insetFrameTimeChartDataList, currentFrameData); - makeFrameRateChartDataList(logData); currentFrameIndex++; } } + } + + private void addFailedAPIData(Logs glesLogs) { + for (LogData data : glesLogs.getRawLogs()) { + GLES20LogData logData = (GLES20LogData) data; + if (checkFailedAPI(logData)) { + SummaryDataManager.getInstance().getFailedApiDataMaker() + .makeData(logData); + } + } + } + + private void addStateDBData(Logs glesLogs) { + int currentFrameIndexOfState = currentFrameIndex; + for (LogData data : glesLogs.getRawLogs()) { + GLES20LogData logData = (GLES20LogData) data; + stateDataMaker.makeStateData(logData, currentFrameIndexOfState); + if (GLUtil.isLastAPIOfFrame(logData.getApiName())) { + currentFrameIndexOfState++; + } + } + } + + private void addAPIDBData(Logs glesLogs) { + int currentFrameIndexOfAPI = currentFrameIndex; + List insetAPIDataList = new ArrayList(); + for (LogData data : glesLogs.getRawLogs()) { + GLES20LogData logData = (GLES20LogData) data; + insetAPIDataList + .add(new GLAPIType(logData, currentFrameIndexOfAPI)); + if (GLUtil.isLastAPIOfFrame(logData.getApiName())) { + currentFrameIndexOfAPI++; + } + } apiDBTable.insert(insetAPIDataList); + } + + private void addFrameTimeChartDBData(Logs glesLogs) { + int currentFrameIndexOfFrameTime = currentFrameIndex; + List> insetFrameTimeChartDataList = new ArrayList>(); + GLCurrentFrameDataManger currentFrameData = new GLCurrentFrameDataManger(); + for (LogData data : glesLogs.getRawLogs()) { + GLES20LogData logData = (GLES20LogData) data; + currentFrameData.addAPIData(new GLAPIType(logData, + currentFrameIndexOfFrameTime)); + if (GLUtil.isLastAPIOfFrame(logData.getApiName())) { + makeFrameTimeData(insetFrameTimeChartDataList, + currentFrameData, currentFrameIndexOfFrameTime); + currentFrameIndexOfFrameTime++; + } + } frameTimeDBTable.insertData(insetFrameTimeChartDataList); + } + + private void addFrameRateChartDBData(Logs glesLogs) { + int currentFrameIndexOfFrameRate = currentFrameIndex; + boolean hasFailedAPIofCurrentFrame = false; + for (LogData data : glesLogs.getRawLogs()) { + GLES20LogData logData = (GLES20LogData) data; + if (checkFailedAPI(logData)) { + hasFailedAPIofCurrentFrame = true; + } + if (GLUtil.isLastAPIOfFrame(logData.getApiName())) { + makeFrameRateChartDataList(logData, + currentFrameIndexOfFrameRate, + hasFailedAPIofCurrentFrame); + hasFailedAPIofCurrentFrame = false; + currentFrameIndexOfFrameRate++; + } + } insertTraceFrameChartData((GLES20LogData) glesLogs.getRawLogs().get( glesLogs.getRawLogs().size() - 1)); } @@ -152,15 +220,14 @@ public class GLDataManager extends PageDataManager { private boolean checkFailedAPI(GLES20LogData logData) { if (logData.getErrno() != GLES20ErrorDefine.EGL_SUCCESS && logData.getErrno() != GLES20ErrorDefine.GL_SUCCESS) { - SummaryDataManager.getInstance().getFailedApiDataMaker() - .makeData(logData); return true; } else { return false; } } - private void makeFrameRateChartDataList(GLES20LogData logData) { + private void makeFrameRateChartDataList(GLES20LogData logData, + int currentFrameIndexOfFrameRate, boolean hasFailedAPIofCurrentFrame) { int time = GLUtil.getTimeLineTime(logData); for (FrameRateInfo data : frameRateDataList) { if (data.getTime() == time) { @@ -170,14 +237,14 @@ public class GLDataManager extends PageDataManager { } FrameRateInfo frameRateData = new FrameRateInfo(); frameRateData.setTime(GLUtil.getTimeLineTime(logData)); - frameRateData.setStartFrameIndex(currentFrameIndex); - frameRateData.setErrno(false); + frameRateData.setStartFrameIndex(currentFrameIndexOfFrameRate); + frameRateData.setErrno(hasFailedAPIofCurrentFrame); frameRateData.setPid(logData.getPid()); frameRateData.addFrameCount(); frameRateDataList.add(frameRateData); } - public void insertTraceFrameChartData(GLES20LogData lastLog) { + private void insertTraceFrameChartData(GLES20LogData lastLog) { List> insetData = new ArrayList>(); List removeframeInfoList = new ArrayList(); for (FrameRateInfo data : frameRateDataList) { @@ -200,12 +267,12 @@ public class GLDataManager extends PageDataManager { private void makeFrameTimeData( List> insetFrameTimeChartDataList, - GLCurrentFrameDataManger glCurrentFrameData) { - int frameNumber = currentFrameIndex; + GLCurrentFrameDataManger glCurrentFrameData, + int currentFrameIndexOfFrameTime) { long frameValue = glCurrentFrameData.getFrametime() / TimelineConstants.KILO_LONG; List framTimeChartData = new ArrayList(); - framTimeChartData.add(frameNumber); + framTimeChartData.add(currentFrameIndexOfFrameTime); framTimeChartData.add(GLUtil.getTimeLineTime(glCurrentFrameData .getFirstLogData())); framTimeChartData.add((int) frameValue); @@ -217,14 +284,33 @@ public class GLDataManager extends PageDataManager { insetFrameTimeChartDataList.add(framTimeChartData); } + public void updateSharingContextList() { + this.sharingContextList = GLDataManager.getInstance() + .getStateSharingDBTableManage().selectSharingData(); + } + + public boolean isSharingData(long itemContextId) { + if (null == sharingContextList) { + return false; + } + for (int i = 0; i < sharingContextList.size(); i++) { + long contextId = sharingContextList.get(i).getContextId(); + long sharingContextId = sharingContextList.get(i) + .getSharingContextId(); + if (contextId == selectedContextID + && sharingContextId == itemContextId) { + return true; + } + } + return false; + } + public int getFrameSize() { return currentFrameIndex; } - private void updateFrameTimeChartEndTime() { - if (currentFrameIndex == 1) { - currentFrameIndex = frameTimeDBTable.getFrameSize(); - } + private void updateFrameTimeChartEndTimeAtOpen() { + currentFrameIndex = frameTimeDBTable.getFrameSize(); } public FrameRateInfo getFrameRateStartIndex(int startIndex, int endIndex) { @@ -244,7 +330,7 @@ public class GLDataManager extends PageDataManager { } public GLStateDataMaker getStateDataMake() { - return GLStateDataMaker; + return stateDataMaker; } public GLFrameRateDBTableManager getFrameRateDBTableManager() { @@ -256,7 +342,7 @@ public class GLDataManager extends PageDataManager { } public GLStateDBTableManager getContextDBTableManage() { - return contextDBTable; + return stateDBTable; } public GLStateProgramDBTableManager getStateProgramDBTableManage() { @@ -291,25 +377,4 @@ public class GLDataManager extends PageDataManager { this.startFrameRateTime = startFrameRateTime; } - public void updateSharingContextList() { - this.sharingContextList = GLDataManager.getInstance() - .getStateSharingDBTableManage().selectSharingData(); - } - - public boolean isSharingData(long itemContextId) { - if (null == sharingContextList) { - return false; - } - for (int i = 0; i < sharingContextList.size(); i++) { - long contextId = sharingContextList.get(i).getContextId(); - long sharingContextId = sharingContextList.get(i) - .getSharingContextId(); - if (contextId == GLDataManager.getInstance().getSelectedContextID() - && sharingContextId == itemContextId) { - return true; - } - } - return false; - } - } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLContextTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLContextTable.java index c717aab..eee3d16 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLContextTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/table/state/GLContextTable.java @@ -64,7 +64,7 @@ import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener public class GLContextTable extends DATableComposite { - private final static String STATE_CHANDE = "STATE_CHANDE";//$NON-NLS-1$ + private final static String STATE_CHANGE = "STATE_CHANGE";//$NON-NLS-1$ private boolean isCheckedBox = true; private String selectedSeq = CommonConstants.EMPTY; private List stateValueList = null; @@ -111,7 +111,7 @@ public class GLContextTable extends DATableComposite { + table.getColumn(1).getWidth(); if (secondeColumnStartX <= e.x && e.x <= secondeColumnEndX - && gridItem.getText(3).equals(STATE_CHANDE)) { + && gridItem.getText(3).equals(STATE_CHANGE)) { String stateName = gridItem.getText(0); createNaviButtons(gridItem, stateName); } else { @@ -172,7 +172,7 @@ public class GLContextTable extends DATableComposite { CommonConstants.OPEN_SQUARE_BRACKET, CommonConstants.CLOSE_SQUARE_BRACKET })); if (isChangeStateValue(defaultState, currenteState)) { - text.add(STATE_CHANDE); + text.add(STATE_CHANGE); } else { text.add(CommonConstants.EMPTY); } -- 2.7.4