utility: Added Tracer for collecting time measurements

* define TRACING_ENABLED in utility/tracing.h to enable tracing
* invoke TraceEvent by writing TRACE() at start of function or scope
* provide an event name with TRACE("name")
* press SPACE to show collected traces history and report with accumulated times
This commit is contained in:
Eberhard Graether
2016-06-16 12:03:34 +02:00
parent 6b31a43f75
commit 9560cc4ea6
14 changed files with 401 additions and 9 deletions
@@ -4,6 +4,7 @@
#include "utility/messaging/type/MessageStatus.h"
#include "utility/text/TextAccess.h"
#include "utility/tracing.h"
#include "utility/utility.h"
#include "utility/utilityString.h"
@@ -28,6 +29,8 @@ const uint CodeController::s_lineRadius = 2;
void CodeController::handleMessage(MessageActivateAll* message)
{
TRACE("code all");
std::vector<ErrorInfo> errors;
m_collection = m_storageAccess->getErrorTokenLocations(&errors);
std::vector<CodeSnippetParams> snippets = getSnippetsForCollection(m_collection);
@@ -95,6 +98,8 @@ void CodeController::handleMessage(MessageActivateLocalSymbols* message)
void CodeController::handleMessage(MessageActivateTokens* message)
{
TRACE("code activate");
CodeView* view = getView();
if (!message->keepContent())
@@ -150,6 +155,8 @@ void CodeController::handleMessage(MessageActivateTokens* message)
void CodeController::handleMessage(MessageChangeFileView* message)
{
TRACE("code change file");
CodeView* view = getView();
switch (message->state)
@@ -237,6 +244,8 @@ void CodeController::handleMessage(MessageScrollCode* message)
void CodeController::handleMessage(MessageShowErrors* message)
{
TRACE("code errors");
std::vector<ErrorInfo> errors;
m_collection = m_storageAccess->getErrorTokenLocations(&errors);
std::vector<CodeSnippetParams> snippets = getSnippetsForCollection(m_collection);
@@ -251,6 +260,8 @@ void CodeController::handleMessage(MessageShowErrors* message)
void CodeController::handleMessage(MessageSearchFullText* message)
{
TRACE("code fulltext");
CodeView* view = getView();
view->clear();
@@ -262,6 +273,8 @@ void CodeController::handleMessage(MessageSearchFullText* message)
void CodeController::handleMessage(MessageShowScope* message)
{
TRACE("code scope");
std::shared_ptr<TokenLocationCollection> collection =
m_storageAccess->getTokenLocationsForLocationIds(std::vector<Id>(1, message->scopeLocationId));
@@ -328,6 +341,8 @@ void CodeController::showContents(MessageBase* message)
std::vector<CodeSnippetParams> CodeController::getSnippetsForActiveTokenLocations(
const TokenLocationCollection* collection, Id declarationId
) const {
TRACE();
std::vector<CodeSnippetParams> snippets;
size_t definitionFileCount = 0;
size_t declarationFileCount = 0;
@@ -429,6 +444,8 @@ std::vector<CodeSnippetParams> CodeController::getSnippetsForFile(
std::shared_ptr<TokenLocationFile> activeTokenLocations, bool addTokenLocations
) const
{
TRACE();
std::shared_ptr<TextAccess> textAccess = m_storageAccess->getFileContent(activeTokenLocations->getFilePath());
std::shared_ptr<TokenLocationFile> scopeLocations
= std::make_shared<TokenLocationFile>(activeTokenLocations->getFilePath().str());
@@ -713,6 +730,8 @@ std::vector<std::string> CodeController::getProjectDescription(TokenLocationFile
void CodeController::addModificationTimes(std::vector<CodeSnippetParams>& snippets) const
{
TRACE();
std::vector<FilePath> filePaths;
for (const CodeSnippetParams& snippet : snippets)
{
@@ -3,6 +3,7 @@
#include <set>
#include "utility/logging/logging.h"
#include "utility/tracing.h"
#include "utility/utility.h"
#include "utility/utilityString.h"
@@ -23,6 +24,8 @@ GraphController::~GraphController()
void GraphController::handleMessage(MessageActivateAll* message)
{
TRACE("graph all");
m_activeNodeIds.clear();
m_activeEdgeIds.clear();
@@ -38,6 +41,8 @@ void GraphController::handleMessage(MessageActivateAll* message)
void GraphController::handleMessage(MessageActivateTokens* message)
{
TRACE("graph activate");
if (message->isEdge || message->keepContent())
{
m_activeEdgeIds = message->tokenIds;
@@ -192,6 +197,8 @@ void GraphController::clear()
void GraphController::createDummyGraphForTokenIds(const std::vector<Id>& tokenIds, const std::shared_ptr<Graph> graph)
{
TRACE();
GraphView* view = getView();
if (!view)
{
@@ -361,6 +368,8 @@ void GraphController::autoExpandActiveNode(const std::vector<Id>& activeTokenIds
bool GraphController::setActive(const std::vector<Id>& activeTokenIds)
{
TRACE();
bool noActive = activeTokenIds.size() == 0;
if (activeTokenIds.size() > 0)
{
@@ -401,6 +410,8 @@ bool GraphController::setActive(const std::vector<Id>& activeTokenIds)
void GraphController::setVisibility(bool noActive)
{
TRACE();
for (std::shared_ptr<DummyNode> node : m_dummyNodes)
{
removeImplicitChildrenRecursive(node.get());
@@ -411,6 +422,8 @@ void GraphController::setVisibility(bool noActive)
void GraphController::setActiveAndVisibility(const std::vector<Id>& activeTokenIds)
{
TRACE();
setVisibility(setActive(activeTokenIds));
}
@@ -519,6 +532,8 @@ void GraphController::setNodeVisibilityRecursiveTopDown(DummyNode* node, bool pa
void GraphController::bundleNodes()
{
TRACE();
// evaluate top level nodes
for (std::shared_ptr<DummyNode> node : m_dummyNodes)
{
@@ -817,6 +832,8 @@ void GraphController::bundleNodesMatching(
void GraphController::bundleNodesByType()
{
TRACE();
std::vector<std::shared_ptr<DummyNode>> oldNodes = m_dummyNodes;
m_dummyNodes.clear();
@@ -864,6 +881,8 @@ void GraphController::bundleNodesByType()
void GraphController::layoutNesting()
{
TRACE();
for (std::shared_ptr<DummyNode> node : m_dummyNodes)
{
layoutNestingRecursive(node.get());
@@ -1096,6 +1115,8 @@ void GraphController::layoutToGrid(DummyNode* node) const
void GraphController::layoutGraph(bool sort)
{
TRACE();
BucketGrid grid(getView()->getViewSize());
grid.createBuckets(m_dummyNodes, m_dummyEdges);
@@ -2,6 +2,7 @@
#include "component/view/SearchView.h"
#include "data/access/StorageAccess.h"
#include "utility/tracing.h"
SearchController::SearchController(StorageAccess* storageAccess)
: m_storageAccess(storageAccess)
@@ -59,6 +60,8 @@ void SearchController::handleMessage(MessageFind* message)
void SearchController::handleMessage(MessageSearchAutocomplete* message)
{
TRACE("search autocomplete");
LOG_INFO("autocomplete string: \"" + message->query + "\"");
getView()->setAutocompletionList(m_storageAccess->getAutocompletionMatches(message->query));
}