in VisualProfiler.cs [604:636]
private static void MemoryUsageToString(char[] stringBuffer, int displayedDecimalDigits, TextMesh textMesh, string prefixString, ulong memoryUsage)
{
// Using a custom number to string method to avoid the overhead, and allocations, of built in string.Format/StringBuilder methods.
// We can also make some assumptions since the domain of the input number (memoryUsage) is known.
float memoryUsageMB = ConvertBytesToMegabytes(memoryUsage);
int memoryUsageIntegerDigits = (int)memoryUsageMB;
int memoryUsageFractionalDigits = (int)((memoryUsageMB - memoryUsageIntegerDigits) * Mathf.Pow(10.0f, displayedDecimalDigits));
int bufferIndex = 0;
for (int i = 0; i < prefixString.Length; ++i)
{
stringBuffer[bufferIndex++] = prefixString[i];
}
bufferIndex = MemoryItoA(memoryUsageIntegerDigits, stringBuffer, bufferIndex);
stringBuffer[bufferIndex++] = '.';
if (memoryUsageFractionalDigits != 0)
{
bufferIndex = MemoryItoA(memoryUsageFractionalDigits, stringBuffer, bufferIndex);
}
else
{
for (int i = 0; i < displayedDecimalDigits; ++i)
{
stringBuffer[bufferIndex++] = '0';
}
}
stringBuffer[bufferIndex++] = 'M';
stringBuffer[bufferIndex++] = 'B';
textMesh.text = new string(stringBuffer, 0, bufferIndex);
}