You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.3 KiB
113 lines
3.3 KiB
7 years ago
|
using System;
|
||
|
using libxl;
|
||
|
|
||
|
namespace performance
|
||
|
{
|
||
|
class Program
|
||
|
{
|
||
|
const int maxRow = 20000;
|
||
|
const int maxCol = 256;
|
||
|
|
||
|
static Random rand = new Random();
|
||
|
|
||
|
static string makeString()
|
||
|
{
|
||
|
string s = "";
|
||
|
for (int i = 0; i < 8; ++i) s += (char)(0x61 + rand.Next(26));
|
||
|
return s;
|
||
|
}
|
||
|
|
||
|
static void test(int number)
|
||
|
{
|
||
|
Console.WriteLine("---------------------------------");
|
||
|
if (number == 1)
|
||
|
{
|
||
|
Console.WriteLine(" strings ");
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
Console.WriteLine(" numbers ");
|
||
|
}
|
||
|
Console.WriteLine("---------------------------------\n");
|
||
|
|
||
|
Book book = new BinBook();
|
||
|
Sheet sheet = book.addSheet("Sheet1");
|
||
|
|
||
|
Console.Write("writing {0:#,###} cells... ", (maxRow - 1) * maxCol);
|
||
|
DateTime t1 = DateTime.Now;
|
||
|
|
||
|
if (number == 1)
|
||
|
{
|
||
|
for (int row = 1; row < maxRow; ++row)
|
||
|
{
|
||
|
for (int col = 0; col < maxCol; ++col)
|
||
|
{
|
||
|
sheet.writeStr(row, col, makeString());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
for (int row = 1; row < maxRow; ++row)
|
||
|
{
|
||
|
for (int col = 0; col < maxCol; ++col)
|
||
|
{
|
||
|
sheet.writeNum(row, col, 1234);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Console.WriteLine("ok");
|
||
|
|
||
|
DateTime t2 = DateTime.Now;
|
||
|
TimeSpan d = t2 - t1;
|
||
|
Console.WriteLine("time: {0} sec", d.TotalSeconds);
|
||
|
|
||
|
double n = (maxRow - 1) * maxCol / d.TotalSeconds;
|
||
|
Console.WriteLine("speed: {0:#,###} cells/sec", n);
|
||
|
Console.WriteLine();
|
||
|
|
||
|
Console.Write("saving... ");
|
||
|
|
||
|
if (number == 1) {
|
||
|
book.save("perfstr.xls");
|
||
|
} else {
|
||
|
book.save("perfnum.xls");
|
||
|
}
|
||
|
|
||
|
Console.WriteLine("ok");
|
||
|
|
||
|
DateTime t3 = DateTime.Now;
|
||
|
Console.WriteLine("time: {0} sec", (t3 - t2).TotalSeconds);
|
||
|
Console.WriteLine();
|
||
|
|
||
|
Console.WriteLine("total time: {0} sec", (t3 - t1).TotalSeconds);
|
||
|
|
||
|
d = t3 - t1;
|
||
|
n = (maxRow - 1) * maxCol / d.TotalSeconds;
|
||
|
Console.WriteLine("speed with saving on disk: {0:#,###} cells/sec\n", n);
|
||
|
|
||
|
GC.Collect();
|
||
|
GC.WaitForPendingFinalizers();
|
||
|
GC.Collect();
|
||
|
}
|
||
|
|
||
|
static void Main(string[] args)
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
test(0);
|
||
|
test(1);
|
||
|
}
|
||
|
catch (System.Exception e)
|
||
|
{
|
||
|
Console.WriteLine(e.Message);
|
||
|
}
|
||
|
|
||
|
Console.Write("\nPress any key to exit...");
|
||
|
Console.ReadKey();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|