public static bool SpeedTest()
{
Logger log = new Logger("SpeedTest");
log.Verbosity = VerbosityLevel.Debug;
log.Info("Starting...");
Random rand = new Random(0);
// setup tokenizer
StreamTokenizer tokenizer = new StreamTokenizer();
tokenizer.Settings.ParseNumbers = true;
int nTokens = 1024;
MemoryStream ms;
StreamWriter writer;
// int
ms = new MemoryStream();
writer = new StreamWriter(ms);
for (int i = 0; i < nTokens; i++)
{
writer.WriteLine("{0}", (int)(rand.NextDouble() * 256));
}
writer.Flush();
ms.Position = 0;
Console.WriteLine("Parse {0} integers took {1:f2} ms", nTokens,
SpeedTestParse(tokenizer, ms));
// float
ms = new MemoryStream();
writer = new StreamWriter(ms);
ms.Position = 0;
for (int i = 0; i < nTokens; i++)
{
writer.WriteLine("{0:f9}", rand.NextDouble() * 10);
}
writer.Flush();
ms.Position = 0;
Console.WriteLine("Parse {0} floats took {1:f2} ms", nTokens,
SpeedTestParse(tokenizer, ms));
// exponential
ms = new MemoryStream();
writer = new StreamWriter(ms);
ms.Position = 0;
for (int i = 0; i < nTokens; i++)
{
writer.WriteLine("{0:e9}", rand.NextDouble() * 1000);
}
writer.Flush();
ms.Position = 0;
Console.WriteLine("Parse {0} exponential floats took {1:f2} ms", nTokens,
SpeedTestParse(tokenizer, ms));
// words
ms = new MemoryStream();
writer = new StreamWriter(ms);
for (int i = 0; i < nTokens; i++)
{
writer.WriteLine("foo ");
}
writer.Flush();
ms.Position = 0;
Console.WriteLine("Parse {0} words took {1:f2} ms", nTokens,
SpeedTestParse(tokenizer, ms));
// hex
ms = new MemoryStream();
writer = new StreamWriter(ms);
for (int i = 0; i < nTokens; i++)
{
writer.WriteLine("0x{0:x}", (int)(rand.NextDouble() * 256));
}
writer.Flush();
ms.Position = 0;
Console.WriteLine("Parse {0} hex numbers took {1:f2} ms", nTokens,
SpeedTestParse(tokenizer, ms));
// Console.WriteLine("Buffer to parse is:");
// Console.WriteLine("{0}", Encoding.ASCII.GetString(ms.GetBuffer()));
return (true);
}