void PrintAllocTimes() { PrintOne( Malloc ); PrintOne( Realloc ); PrintOne( Free ); }
void StringProfiler::PrintAll() { Output::Print(L"=============================================================\n"); Output::Print(L"String Statistics\n"); Output::Print(L"-------------------------------------------------------------\n"); Output::Print(L" Length 7bit ASCII 8bit ASCII Unicode Total %%Total\n"); Output::Print(L" --------- ---------- ---------- ---------- ---------- ------\n"); // Build an index for printing the histogram in descending order HistogramIndex index(&allocator, stringLengthMetrics.Count()); uint totalStringCount = 0; stringLengthMetrics.Map([this, &index, &totalStringCount](unsigned int len, StringMetrics metrics) { uint lengthTotal = metrics.Total(); index.Add(len, lengthTotal); totalStringCount += lengthTotal; }); index.SortDescending(); StringMetrics cumulative = {}; uint maxLength = 0; for(uint i = 0; i != index.Count(); ++i ) { uint length = index.Get(i); // UintHashMap::Lookup doesn't work with value-types (it returns NULL // on error), so use TryGetValue instead. StringMetrics metrics; if( stringLengthMetrics.TryGetValue(length, &metrics) ) { PrintOne( length, metrics, totalStringCount ); cumulative.Accumulate(metrics); maxLength = max( maxLength, length ); } } Output::Print(L"-------------------------------------------------------------\n"); Output::Print(L" Totals %10u %10u %10u %10u (100%%)\n", cumulative.count7BitASCII, cumulative.count8BitASCII, cumulative.countUnicode, cumulative.Total() ); if(discardedWrongThread>0) { Output::Print(L"WARNING: %u strings were not counted because they were allocated on a background thread\n",discardedWrongThread); } Output::Print(L"\n"); Output::Print(L"Max string length is %u chars\n", maxLength); Output::Print(L"%u empty strings (Literals or BufferString) were requested\n", emptyStrings); Output::Print(L"%u single char strings (Literals or BufferString) were requested\n", singleCharStrings); if( this->embeddedNULStrings == 0 ) { Output::Print(L"No embedded NULs were detected\n"); } else { Output::Print(L"Embedded NULs: %u NULs in %u strings\n", this->embeddedNULChars, this->embeddedNULStrings); } Output::Print(L"\n"); if(stringConcatMetrics.Count() == 0) { Output::Print(L"No string concatenations were performed\n"); } else { Output::Print(L"String concatenations (Strings %u chars or longer are treated as \"Large\")\n", k_MaxConcatLength); Output::Print(L" LHS + RHS SB Concat Buf Other Total\n"); Output::Print(L"------ ------ ------ ------ ------ ------ ------\n"); uint totalConcatenations = 0; uint totalConcatTree = 0; uint totalBufString = 0; uint totalCompoundString = 0; uint totalOther = 0; stringConcatMetrics.Map([&](UintUintPair const& key, const ConcatMetrics& metrics) { PrintOneConcat(key, metrics); totalConcatenations += metrics.Total(); totalConcatTree += metrics.concatTreeCount; totalBufString += metrics.bufferStringBuilderCount; totalCompoundString += metrics.compoundStringCount; totalOther += metrics.unknownCount; } ); Output::Print(L"-------------------------------------------------------\n"); Output::Print(L"Total %6u %6u %6u %6u %6u\n", totalConcatenations, totalCompoundString, totalConcatTree, totalBufString, totalOther); } Output::Flush(); }
static void PrintResults(WORD Encoded[], icColorSpaceSignature ColorSpace) { int i; switch (ColorSpace) { case icSigXYZData: cmsXYZEncoded2Float(&xyz, Encoded); PrintCooked("X", xyz.X * 100.); PrintCooked("Y", xyz.Y * 100.); PrintCooked("Z", xyz.Z * 100.); break; case icSigLabData: cmsLabEncoded2Float(&Lab, Encoded); PrintCooked("L*", Lab.L); PrintCooked("a*", Lab.a); PrintCooked("b*", Lab.b); break; case icSigLuvData: PrintOne("L", Encoded[0]); PrintOne("u", Encoded[1]); PrintOne("v", Encoded[2]); break; case icSigYCbCrData: PrintOne("Y", Encoded[0]); PrintOne("Cb", Encoded[1]); PrintOne("Cr", Encoded[2]); break; case icSigYxyData: PrintOne("Y", Encoded[0]); PrintOne("x", Encoded[1]); PrintOne("y", Encoded[2]); break; case icSigRgbData: PrintOne("R", Encoded[0]); PrintOne("G", Encoded[1]); PrintOne("B", Encoded[2]); break; case icSigGrayData: PrintOne("G", Encoded[0]); break; case icSigHsvData: PrintOne("H", Encoded[0]); PrintOne("s", Encoded[1]); PrintOne("v", Encoded[2]); break; case icSigHlsData: PrintOne("H", Encoded[0]); PrintOne("l", Encoded[1]); PrintOne("s", Encoded[2]); break; case icSigCmykData: Print100("C", Encoded[0]); Print100("M", Encoded[1]); Print100("Y", Encoded[2]); Print100("K", Encoded[3]); break; case icSigCmyData: Print100("C", Encoded[0]); Print100("M", Encoded[1]); Print100("Y", Encoded[2]); break; case icSigHexachromeData: case icSig6colorData: Print100("C", Encoded[0]); Print100("M", Encoded[1]); Print100("Y", Encoded[2]); Print100("K", Encoded[3]); Print100("c", Encoded[1]); Print100("m", Encoded[2]); break; default: for (i=0; i < _cmsChannelsOf(OutputColorSpace); i++) { char Buffer[10]; sprintf(Buffer, "CHAN%d", i + 1); PrintOne(Buffer, Encoded[i]); } } }