Skip to content

Commit e59e34c

Browse files
committed
showtime: separate items properly
1 parent 30ff1aa commit e59e34c

3 files changed

Lines changed: 24 additions & 11 deletions

File tree

lib/cppcheck.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -902,10 +902,7 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string
902902
checkRawTokens(tokenizer);
903903

904904
// Simplify tokens into normal form, skip rest of iteration if failed
905-
Timer timer2("Tokenizer::simplifyTokens1", mSettings.showtime, &s_timerResults);
906-
const bool result = tokenizer.simplifyTokens1(mCurrentConfig);
907-
timer2.stop();
908-
if (!result)
905+
if (!tokenizer.simplifyTokens1(mCurrentConfig))
909906
continue;
910907

911908
// dump xml if --dump

lib/timer.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,17 @@ void TimerResults::showResults(SHOWTIME_MODES mode) const
5858
for (std::vector<dataElementType>::const_iterator iter=data.cbegin(); iter!=data.cend(); ++iter) {
5959
const double sec = iter->second.seconds();
6060
const double secAverage = sec / (double)(iter->second.mNumberOfResults);
61-
overallData.mClocks += iter->second.mClocks;
61+
bool hasParent = false;
62+
{
63+
// Do not use inner timers in "Overall time"
64+
const std::string::size_type pos = iter->first.rfind("::");
65+
if (pos != std::string::npos)
66+
hasParent = std::any_of(data.cbegin(), data.cend(), [iter,pos](const dataElementType& d) {
67+
return d.first.size() == pos && iter->first.compare(0, d.first.size(), d.first) == 0;
68+
});
69+
}
70+
if (!hasParent)
71+
overallData.mClocks += iter->second.mClocks;
6272
if ((mode != SHOWTIME_MODES::SHOWTIME_TOP5) || (ordinal<=5)) {
6373
std::cout << iter->first << ": " << sec << "s (avg. " << secAverage << "s - " << iter->second.mNumberOfResults << " result(s))" << std::endl;
6474
}

lib/tokenize.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3251,8 +3251,14 @@ bool Tokenizer::simplifyTokens1(const std::string &configuration)
32513251

32523252
mConfiguration = configuration;
32533253

3254-
if (!simplifyTokenList1(list.getFiles().front().c_str()))
3255-
return false;
3254+
if (mTimerResults) {
3255+
Timer t("Tokenizer::simplifyTokens1::simplifyTokenList1", mSettings->showtime, mTimerResults);
3256+
if (!simplifyTokenList1(list.getFiles().front().c_str()))
3257+
return false;
3258+
} else {
3259+
if (!simplifyTokenList1(list.getFiles().front().c_str()))
3260+
return false;
3261+
}
32563262

32573263
if (mTimerResults) {
32583264
Timer t("Tokenizer::simplifyTokens1::createAst", mSettings->showtime, mTimerResults);
@@ -5298,7 +5304,7 @@ bool Tokenizer::simplifyTokenList1(const char FileName[])
52985304

52995305
// Bail out if code is garbage
53005306
if (mTimerResults) {
5301-
Timer t("Tokenizer::tokenize::findGarbageCode", mSettings->showtime, mTimerResults);
5307+
Timer t("Tokenizer::simplifyTokens1::simplifyTokenList1::findGarbageCode", mSettings->showtime, mTimerResults);
53025308
findGarbageCode();
53035309
} else {
53045310
findGarbageCode();
@@ -5469,7 +5475,7 @@ bool Tokenizer::simplifyTokenList1(const char FileName[])
54695475

54705476
// typedef..
54715477
if (mTimerResults) {
5472-
Timer t("Tokenizer::tokenize::simplifyTypedef", mSettings->showtime, mTimerResults);
5478+
Timer t("Tokenizer::simplifyTokens1::simplifyTokenList1::simplifyTypedef", mSettings->showtime, mTimerResults);
54735479
simplifyTypedef();
54745480
} else {
54755481
simplifyTypedef();
@@ -5577,7 +5583,7 @@ bool Tokenizer::simplifyTokenList1(const char FileName[])
55775583
if (!isC()) {
55785584
// Handle templates..
55795585
if (mTimerResults) {
5580-
Timer t("Tokenizer::tokenize::simplifyTemplates", mSettings->showtime, mTimerResults);
5586+
Timer t("Tokenizer::simplifyTokens1::simplifyTokenList1::simplifyTemplates", mSettings->showtime, mTimerResults);
55815587
simplifyTemplates();
55825588
} else {
55835589
simplifyTemplates();
@@ -5607,7 +5613,7 @@ bool Tokenizer::simplifyTokenList1(const char FileName[])
56075613
validate(); // #6772 "segmentation fault (invalid code) in Tokenizer::setVarId"
56085614

56095615
if (mTimerResults) {
5610-
Timer t("Tokenizer::tokenize::setVarId", mSettings->showtime, mTimerResults);
5616+
Timer t("Tokenizer::simplifyTokens1::simplifyTokenList1::setVarId", mSettings->showtime, mTimerResults);
56115617
setVarId();
56125618
} else {
56135619
setVarId();

0 commit comments

Comments
 (0)