我需要衡量我书面职能的表现。由于我无法使用C ++ 11并且需要微秒,因此我使用了来自windows.h的QueryPerformanceCounter。
int nextSymbol = i + 1;
char typeOfQuotes = line[i];
private static void ParseComplexField(string line, StringBuilder tokenBuilder, ref int i, char typeOfQuotes)
{
int slashCount = 0;
for (; i < line.Length; i++)
{
if (line[i] == '\\')
{
slashCount++;
if (line[i - 1] == '\\' && slashCount % 2 == 0)
{
tokenBuilder.Append("\\");
slashCount = 0;
}
}
else if (line[i] == typeOfQuotes)
{
if (line[i - 1] == '\\' && slashCount % 2 == 1)
{
tokenBuilder.Append(typeOfQuotes);
slashCount = 0;
}
else break;
}
else
{
tokenBuilder.Append(line[i]);
slashCount = 0;
}
}
}
如果我不调用appendToCsvFile(),则timeElapsed的结果通常在2到10微秒之间。
调用函数appendToCsvFile()只会将结果写入文件,而这只会影响测量结果(结果介于20到60微秒之间)。
该功能在测量后称为“功能”,但有一定作用。有什么理由可以做到这一点?是否有适用于Visual C ++ 2010的适合微秒测量的库?
答案 0 :(得分:2)
在微秒范围内测量某物时,您需要预期会发生奇怪的事情。
有许多可能的原因,包括:
appendToCsvFile
正在清除CPU缓存,而没有进行此调用,myFunctionToTest
一遍又一遍地使用相同的内存,这将导致良好的热缓存和更好的性能。myFunctionToTest