2012-07-18 61 views

回答

1

我只是做了与2012的SpreadsheetGear测试的.NET运行在.NET 4.5 x64的应用程序和Excel 2013的x64 RTM的Windows 8的x64与超频酷睿i7-980X都在运行。

我使用公式“= RAND()”)创建了包含1,000万个公式(1,000,000行和10列)的工作簿。

Excel 2013在20.18秒内创建了工作簿,使用了795MB的RAM并在0.39秒内计算出来。

SpreadsheetGear 2012在0.42秒内创建工作簿,使用153MB的RAM并在0.09秒内计算。

的SpreadsheetGear有限仅受内存容量,并明显高于Excel的2013更有效,当涉及到内存使用情况,更何况事实的SpreadsheetGear 2012创建和计算较大的工作簿于Excel 2013快 - 至少在这个案件。

您可以下载SpreadsheetGear for .NET的免费评估here

声明:我自己的SpreadsheetGear LLC。

这是我跑的SpreadsheetGear代码:

using System; 
    using SpreadsheetGear; 

    namespace SpreadsheetGearMemTest 
    { 
     class Program 
     { 
      static void Test(IWorkbook workbook, int rows, int cols) 
      { 
       var worksheet = workbook.Worksheets[0]; 
       var cells = worksheet.Cells; 
       var timer = System.Diagnostics.Stopwatch.StartNew(); 
       var startMem = System.GC.GetTotalMemory(true); 
       cells[0, 0, rows - 1, cols - 1].Formula = "=RAND()"; 
       timer.Stop(); 
       var memUsed = System.GC.GetTotalMemory(true) - startMem; 
       var calcTimer = System.Diagnostics.Stopwatch.StartNew(); 
       workbook.WorkbookSet.Calculate(); 
       Console.WriteLine("Creating took {0} seconds and {1}MB, calc took {2} seconds.", 
        timer.Elapsed.TotalSeconds, memUsed/(1024.0 * 1024.0), calcTimer.Elapsed.TotalSeconds); 
       workbook.Close(); 
      } 

      static void Main(string[] args) 
      { 
       // Get the code JITed. 
       Test(Factory.GetWorkbook(), 100, 10); 
       // Do the test. 
       Test(Factory.GetWorkbook(), 1000000, 10); 
      } 
     } 
    } 
+0

谢谢您的回复!我将进一步调查为什么将数据导入WorkbookView导致应用程序陷入困境,因为除了SpreadsheetGears大小限制之外,它似乎是另一个原因。但是你绝对会为我缩小范围。对此,我真的非常感激!无论我发现哪些内容看起来有用,我都会重新发布 – 2012-11-15 23:51:23

相关问题