----------------------------------------------------------------------
| 1318 | |
| 1319 | // ---------------------------------------------------------------------- |
| 1320 | void RegionsProfStats::WriteTextTrace(std::ostream &ios, bool simpleCombine, |
| 1321 | int whichProc, std::string delimString) |
| 1322 | { |
| 1323 | Vector<std::string> fNumberNames(mFNameNumbersPerProc[whichProc].size()); |
| 1324 | for(std::map<std::string, int>::const_iterator it = mFNameNumbersPerProc[whichProc].begin(); |
| 1325 | it != mFNameNumbersPerProc[whichProc].end(); ++it) |
| 1326 | { |
| 1327 | fNumberNames[it->second] = it->first; |
| 1328 | } |
| 1329 | |
| 1330 | ios << "Text Trace (function number :: function name :: inclusive time :: exclusive time :: ncalls :: callstackdepth :: call time)\n\n"; |
| 1331 | ios << std::setprecision(16); |
| 1332 | |
| 1333 | if(simpleCombine) { |
| 1334 | BLProfiler::CallStats *combCallStats = 0; |
| 1335 | |
| 1336 | for(int idb(0); idb < dataBlocks.size(); ++idb) { |
| 1337 | DataBlock &dBlock = dataBlocks[idb]; |
| 1338 | if(dBlock.proc == whichProc) { |
| 1339 | ReadBlock(dBlock, false, true); // read only the traces |
| 1340 | Vector<BLProfiler::CallStats> &vCallTrace = dBlock.vCallStats; |
| 1341 | |
| 1342 | for(int i(0); i < vCallTrace.size(); ++i) { |
| 1343 | BLProfiler::CallStats &cs = vCallTrace[i]; |
| 1344 | if(cs.callStackDepth < 0 || cs.csFNameNumber < 0) { // ---- the unused cs |
| 1345 | continue; |
| 1346 | } |
| 1347 | |
| 1348 | if(i < vCallTrace.size() - 2) { |
| 1349 | BLProfiler::CallStats &csNext = vCallTrace[i + 1]; |
| 1350 | if(csNext.callStackDepth == cs.callStackDepth && |
| 1351 | cs.csFNameNumber == csNext.csFNameNumber) |
| 1352 | { |
| 1353 | if(combCallStats == 0) { |
| 1354 | combCallStats = new BLProfiler::CallStats(cs); |
| 1355 | } else { |
| 1356 | combCallStats->nCSCalls += cs.nCSCalls; |
| 1357 | combCallStats->totalTime += cs.totalTime; |
| 1358 | combCallStats->stackTime += cs.stackTime; |
| 1359 | } |
| 1360 | } else { |
| 1361 | if(combCallStats == 0) { |
| 1362 | PRINTCSTT(ios, cs, delimString); |
| 1363 | } else { |
| 1364 | combCallStats->nCSCalls += cs.nCSCalls; |
| 1365 | combCallStats->totalTime += cs.totalTime; |
| 1366 | combCallStats->stackTime += cs.stackTime; |
| 1367 | PRINTCSTT(ios, (*combCallStats), delimString); |
| 1368 | delete combCallStats; |
| 1369 | combCallStats = 0; |
| 1370 | } |
| 1371 | } |
| 1372 | } else { |
| 1373 | if(combCallStats != 0) { |
| 1374 | PRINTCSTT(ios, (*combCallStats), delimString); |
| 1375 | delete combCallStats; |
| 1376 | combCallStats = 0; |
| 1377 | } |
no test coverage detected