// print the profiled data in a format that matches the tool sample's output. double ProfileNode::debugPrintSampleStyleRecursively(int indentLevel, FunctionCallHashCount& countedFunctions, const ProfileSubtreeData& data) { dataLogF(" "); auto it = data.selfAndTotalTimes.find(this); ASSERT(it != data.selfAndTotalTimes.end()); double nodeTotalTime = it->value.second; // Print function names const char* name = functionName().utf8().data(); double sampleCount = nodeTotalTime * 1000; if (indentLevel) { for (int i = 0; i < indentLevel; ++i) dataLogF(" "); countedFunctions.add(functionName().impl()); dataLogF("%.0f %s\n", sampleCount ? sampleCount : 1, name); } else dataLogF("%s\n", name); ++indentLevel; // Print children's names and information double sumOfChildrensCount = 0.0; for (StackIterator currentChild = m_children.begin(); currentChild != m_children.end(); ++currentChild) sumOfChildrensCount += (*currentChild)->debugPrintSampleStyleRecursively(indentLevel, countedFunctions, data); sumOfChildrensCount *= 1000; // // Print remainder of samples to match sample's output if (sumOfChildrensCount < sampleCount) { dataLogF(" "); while (indentLevel--) dataLogF(" "); dataLogF("%.0f %s\n", sampleCount - sumOfChildrensCount, functionName().utf8().data()); } return nodeTotalTime; }
// print the profiled data in a format that matches the tool sample's output. double ProfileNode::debugPrintDataSampleStyle(int indentLevel, FunctionCallHashCount& countedFunctions) const { dataLogF(" "); // Print function names const char* name = functionName().utf8().data(); double sampleCount = m_totalTime * 1000; if (indentLevel) { for (int i = 0; i < indentLevel; ++i) dataLogF(" "); countedFunctions.add(functionName().impl()); dataLogF("%.0f %s\n", sampleCount ? sampleCount : 1, name); } else dataLogF("%s\n", name); ++indentLevel; // Print children's names and information double sumOfChildrensCount = 0.0; for (StackIterator currentChild = m_children.begin(); currentChild != m_children.end(); ++currentChild) sumOfChildrensCount += (*currentChild)->debugPrintDataSampleStyle(indentLevel, countedFunctions); sumOfChildrensCount *= 1000; // // Print remainder of samples to match sample's output if (sumOfChildrensCount < sampleCount) { dataLogF(" "); while (indentLevel--) dataLogF(" "); dataLogF("%.0f %s\n", sampleCount - sumOfChildrensCount, functionName().utf8().data()); } return m_totalTime; }