Skip to content

Commit

Permalink
When running the profiler, also output a smaller prof.json in additio…
Browse files Browse the repository at this point in the history
…n to the xml

- The OMEdit transformations browser will now look at the prof.json and display a summary for the profile blocks


git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@20267 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
sjoelund committed Apr 25, 2014
1 parent 18d6156 commit 0ca4136
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 4 deletions.
45 changes: 42 additions & 3 deletions OMEdit/OMEditGUI/GUI/Widgets/TransformationsWidget.cpp
Expand Up @@ -417,22 +417,32 @@ EquationTreeWidget::EquationTreeWidget(TransformationsWidget *pTransformationWid
setItemDelegate(new ItemDelegate(this));
setObjectName("EquationsTree");
setIndentation(Helper::treeIndentation);
setColumnCount(3);
setColumnCount(7);
setTextElideMode(Qt::ElideMiddle);
setSortingEnabled(true);
sortByColumn(0, Qt::AscendingOrder);
setColumnWidth(0, 45);
setColumnWidth(0, 55);
setColumnWidth(1, 60);
setColumnWidth(2, 200);
setColumnWidth(3, 55);
setColumnWidth(4, 80);
setColumnWidth(5, 80);
setColumnWidth(6, 60);
setExpandsOnDoubleClick(false);
QStringList headerLabels;
headerLabels << Helper::index << Helper::type << Helper::equation;
headerLabels << Helper::index << Helper::type << Helper::equation << Helper::executionCount << Helper::executionMaxTime << Helper::executionTime << Helper::executionFraction;
setHeaderLabels(headerLabels);
connect(this, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), mpTransformationWidget, SLOT(fetchEquationData(QTreeWidgetItem*,int)));
}

TransformationsWidget::TransformationsWidget(QString infoXMLFullFileName, MainWindow *pMainWindow)
: mInfoXMLFullFileName(infoXMLFullFileName), mpMainWindow(pMainWindow)
{
if (!mInfoXMLFullFileName.endsWith("_info.xml")) {
mProfJSONFullFileName = "";
} else {
mProfJSONFullFileName = infoXMLFullFileName.left(infoXMLFullFileName.size() - 8) + "prof.json";
}
setWindowIcon(QIcon(":/Resources/icons/debugger.svg"));
setWindowTitle(QString(Helper::applicationName).append(" - ").append(Helper::transformationalDebugger));
QToolButton *pReloadToolButton = new QToolButton;
Expand Down Expand Up @@ -763,6 +773,7 @@ void TransformationsWidget::loadTransformations()
mpTVariablesTreeModel->insertTVariablesItems();
/* load equations */
fetchEquations();
parseProfiling(mProfJSONFullFileName);
}

void TransformationsWidget::fetchDefinedInEquations(OMVariable &variable)
Expand Down Expand Up @@ -1092,3 +1103,31 @@ void TransformationsWidget::fetchEquationData(QTreeWidgetItem *pEquationTreeItem
}
fetchEquationData(equationIndex);
}

#include <qjson/parser.h>

void TransformationsWidget::parseProfiling(QString fileName)
{
QFile *file = new QFile(fileName);
if (!file->exists()) {
delete file;
return;
}
QJson::Parser parser;
bool ok;
QVariantMap result = parser.parse(file, &ok).toMap();
double totalStepsTime = result["totalStepsTime"].toDouble();
foreach (QVariant v, result["profileBlocks"].toList()) {
QVariantMap eq = v.toMap();
long id = eq["id"].toInt();
QTreeWidgetItem *pTreeWidgetItem = findEquationTreeItem(id);
if (pTreeWidgetItem) {
double time = eq["time"].toDouble();
pTreeWidgetItem->setText(3, QString::number(eq["ncall"].toInt()));
pTreeWidgetItem->setText(4, QString::number(eq["maxTime"].toDouble(), 'g', 3));
pTreeWidgetItem->setText(5, QString::number(time, 'g', 3));
pTreeWidgetItem->setText(6, QString::number(100 * time / totalStepsTime, 'g', 3) + "%");
}
}
delete file;
}
4 changes: 3 additions & 1 deletion OMEdit/OMEditGUI/GUI/Widgets/TransformationsWidget.h
Expand Up @@ -181,7 +181,7 @@ class TransformationsWidget : public QWidget
void clearTreeWidgetItems(QTreeWidget *pTreeWidget);
private:
MainWindow *mpMainWindow;
QString mInfoXMLFullFileName;
QString mInfoXMLFullFileName, mProfJSONFullFileName;
MyHandler *mpInfoXMLFileHandler;
QLineEdit *mpFindVariablesTextBox;
QComboBox *mpFindSyntaxComboBox;
Expand Down Expand Up @@ -209,6 +209,8 @@ class TransformationsWidget : public QWidget
QSplitter *mpEquationsHorizontalSplitter;
QSplitter *mpTransformationsVerticalSplitter;
QSplitter *mpTransformationsHorizontalSplitter;

void parseProfiling(QString fileName);
public slots:
void reloadTransformations();
void findVariables();
Expand Down
3 changes: 3 additions & 0 deletions OMEdit/OMEditGUI/OMEditGUI.pro
Expand Up @@ -180,6 +180,9 @@ INCLUDEPATH += $$(OMDEV)/lib/omniORB-4.1.6-mingw/include \
}
}

LIBS += -lqjson
INCLUDEPATH += ../../3rdParty/qjson-0.8.1/build/include

INCLUDEPATH += . \
Annotations \
Component \
Expand Down
8 changes: 8 additions & 0 deletions OMEdit/OMEditGUI/Util/Helper.cpp
Expand Up @@ -218,6 +218,10 @@ QString Helper::reload;
QString Helper::index;
QString Helper::equation;
QString Helper::transformationalDebugger;
QString Helper::executionCount;
QString Helper::executionMaxTime;
QString Helper::executionTime;
QString Helper::executionFraction;

void Helper::initHelperVariables()
{
Expand Down Expand Up @@ -349,6 +353,10 @@ void Helper::initHelperVariables()
Helper::index = tr("Index");
Helper::equation = tr("Equation");
Helper::transformationalDebugger = tr("Transformational Debugger");
Helper::executionCount = tr("Executions");
Helper::executionMaxTime = tr("Max time");
Helper::executionTime = tr("Time");
Helper::executionFraction = tr("Fraction");
}

QString GUIMessages::getMessage(int type)
Expand Down
4 changes: 4 additions & 0 deletions OMEdit/OMEditGUI/Util/Helper.h
Expand Up @@ -224,6 +224,10 @@ class Helper : public QObject
static QString index;
static QString equation;
static QString transformationalDebugger;
static QString executionCount;
static QString executionMaxTime;
static QString executionTime;
static QString executionFraction;
};

class GUIMessages : public QObject
Expand Down

0 comments on commit 0ca4136

Please sign in to comment.