GrapeCity Documents for Excel (GcExcel) is a fast, high-performance spreadsheet component. We've recently improved the performance time for many operations with this latest Service Pack 1.5.0.3.
Download the GcExcel Service Pack 1.5.0.3
Now faster than before! Check out some of our new enhancements:
We've conducted several tests with the new GcExcel version 1.5.0.3 and compared it with its previous version, as well as other competitors on three operating systems (Windows, MAC, and Linux).
Windows
MAC
Linux
We populated 1,000,000 rows X 30 column cells with the random data:
The performance time for following scenarios was measured at the point when values are set in a cell/range, and values are retrieved from a cell/range.
Random rand = new Random();
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
for (int i = 0; i < rowCount; ++i)
{
worksheet.Range[i, 1].Value = string.Format("R{0}T{1}", i, i % 100);
worksheet.Range[i, 2].Value = string.Format("R{0}T{1}", i, i % 100);
worksheet.Range[i, 3].Value = string.Format("R{0}T{1}", i, i % 100);
worksheet.Range[i, 4].Value = string.Format("R{0}T{1}", i, i % 100);
worksheet.Range[i, 5].Value = string.Format("R{0}T{1}", i, i % 100);
worksheet.Range[i, 6].Value = DateTime.Now.AddDays(rand.NextDouble() * 10.0);
worksheet.Range[i, 7].Value = DateTime.Now.AddDays(rand.NextDouble() * 10.0);
worksheet.Range[i, 8].Value = DateTime.Now.AddDays(rand.NextDouble() * 10.0);
worksheet.Range[i, 9].Value = rand.Next(1000);
worksheet.Range[i, 10].Value = rand.Next(2000);
worksheet.Range[i, 11].Value = rand.Next(3000);
worksheet.Range[i, 12].Value = rand.Next(4000);
worksheet.Range[i, 13].Value = rand.Next(5000);
worksheet.Range[i, 14].Value = rand.NextDouble() * 10000.0;
worksheet.Range[i, 15].Value = rand.NextDouble() * 10000.0;
worksheet.Range[i, 16].Value = rand.NextDouble() * 10000.0;
worksheet.Range[i, 17].Value = rand.NextDouble() * 10000.0;
worksheet.Range[i, 18].Value = rand.NextDouble() * 10000.0;
worksheet.Range[i, 19].Value = true;
worksheet.Range[i, 20].Value = false;
worksheet.Range[i, 31].Value = rand.Next(3000);
worksheet.Range[i, 32].Value = rand.Next(4000);
worksheet.Range[i, 33].Value = rand.Next(5000);
worksheet.Range[i, 34].Value = rand.NextDouble() * 10000.0;
worksheet.Range[i, 35].Value = rand.NextDouble() * 10000.0;
worksheet.Range[i, 36].Value = rand.NextDouble() * 10000.0;
worksheet.Range[i, 37].Value = rand.NextDouble() * 10000.0;
worksheet.Range[i, 38].Value = rand.NextDouble() * 10000.0;
worksheet.Range[i, 39].Value = true;
worksheet.Range[i, 30].Value = false;
}
stopwatch.Stop();
System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
for (int i = 0; i < rowCount; ++i)
{
for (int j = 0; j < 30; j++)
{
values[i, j] = worksheet.Range[i, j].Value;
}
}
stopwatch.Stop();
System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
worksheet.Range[0, 0, rowCount, columnCount].Value = values;
stopwatch.Stop();
System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Restart();
var values = worksheet.Range[0, 0, rowCount, 30].Value;
stopwatch.Stop();
Here are the performance results that compare GcExcel with its previous version and with other competitors.
Note: Note the considerable performance improvement of GcExcel version 1.5.0.3 in highlighted areas. This is a five times improvement over the previous version.
Download the sample and run the tests on your own!
We'll continue to monitor and improve the performance of GcExcel with every release.
Note: The results were taken on particular machine configurations. If you are running at a different configuration, the values may not exactly match with our collected results. In case you observe any discrepancies in the overall performance, please leave your comments below.