none
Recalculation twice as slow comparing Excel 2013 Preview with Excel 2010

    Question

  • It looks like recalculation got twice as slow in Excel 2013, affecting the performance of our software (we make scientific add-ins for Excel.)   We ran a test in which a workbook with a single Rand() function was recalculated 100000 times, measuring how long it took.  Here is the environment in which we tested:

    Excel 2010: Version 14.0.6123.5001 (32-bit)

    Excel 2013 Preview: Version 15.0.4128.1014 (32-bit)

    Computer: 2.67 GHz Intel Core i5 CPU, 4GB RAM, 64-bit OS (Windows 7 SR1)

    It took about 4 seconds in Excel 2010, and about 8 seconds in Excel 2013.

    To see the problem, perform the steps below, first with Excel 2010 and then with Excel 2013 Preview, using the same machine, so the runtimes can be compared:

    *Hit Alt-F11 to open the VBA Editor

    *Select Insert>Module to add Module1

    *Paste included code in Module1:

    #If Win64 Then
    Public Declare PtrSafe Function GetTickCount Lib "Kernel32" () As Long
    #Else
    Public Declare Function GetTickCount Lib "Kernel32" () As Long
    #End If
    Public Sub PerformTimingTest()
        Dim oldCalculation As XlCalculation
        Dim oldScreenUpdating As Boolean
        Dim oldDisplayAlerts As Boolean
        Dim ws As Worksheet
        Dim t1 As Long
        Dim t2 As Long
        Dim i As Long
        
        'Put Excel in manual mode, turn off screen updating, and turn off display alerts:
        oldCalculation = Application.Calculation: Application.Calculation = xlCalculationManual
        oldScreenUpdating = Application.ScreenUpdating: Application.ScreenUpdating = False
        oldDisplayAlerts = Application.DisplayAlerts: Application.DisplayAlerts = False
        Application.EnableCancelKey = xlErrorHandler
        
        On Error GoTo exitPoint
        
        'Add a temp worksheet to this workbook and a Rand() worksheet functions:
        Set ws = ThisWorkbook.Worksheets.Add()
        ws.Range("A1").Formula = "=Rand()"
               
        'Recalculate the application a bunch of times and keep track of how long that takes:
        t1 = GetTickCount()
        For i = 1 To 100000
            Application.Calculate
        Next i
        t2 = GetTickCount()
        
        MsgBox "Test Completed.  Time = " & Round((t2 - t1) / 1000, 1) 'In seconds
        
             
    exitPoint:
        If Not (ws Is Nothing) Then ws.Delete
        
        'Restore the application to it's normal state:
        Application.Calculation = oldCalculation
        Application.ScreenUpdating = oldScreenUpdating
        Application.DisplayAlerts = oldDisplayAlerts
    End Sub

    *Run it by clicking inside the procedure code and hitting F5.

    Please address the problem; I'm sure Microsoft wants the performance to improve, not deteriorate, in the new version of Excel.


    Wednesday, September 19, 2012 4:42 PM

All replies

  • Hi Mirek,

    Thanks for posting in the MSDN forum.

    I will ask Microsoft's engineer look into your issue. I think Microsoft will pay more attention on the performance of Office suites. Because it is relate to customer experience. Do you think so?

    Have a good day,

    Tom


    Tom Xu [MSFT]
    MSDN Community Support | Feedback to us

    Thursday, September 20, 2012 8:59 AM
  • Tom,

    Thank you very much for passing it on.

    Best regards,

    Mirek

    Thursday, September 20, 2012 10:37 AM
  • Hi Mirek,

    Thanks for bringing this to our attention.  I am able to reproduce this and have engaged the product group to take a look and analyze.

    Best Regards,
    Chad

    Thursday, September 20, 2012 8:20 PM
  • Chad,

    Thank you very much for looking into it.

    This problem is magnified when Excel 2013 runs on Windows 8.  Comparing Excel 2013+Windows 8 with Excel 2010+Windows 7, the test takes 5 times longer to complete.

    So we very much hope this can be fixed before the final release.

    Best Regards,

    Mirek

    Friday, September 21, 2012 6:57 PM
  • Testing with the RTM, it seems the very bad performance with the Excel 2013 + Windows 8 combination was fixed.  Thank you!

    But it still seems to be true that with Excel 2013 (on Windows 7 or Windows 8) the runtime is about twice as long comparing to Excel 2010 on Windows 7.  We'd hope this could be fixed in the subsequent releases, as this is crucial for the performance of our software


    Monday, October 29, 2012 3:50 PM
  • You may want to try those calculations in the .xlsb format - it definitely provides file size reduction, and I've seen some efficiencies in performance too.

    However, I'll add my vote - also seeing very slow behavior, just trying to arrow-key down through cells feels like wading through quicksand.  And my laptop is a high-end engineering machine with 8 cores and 16GB of RAM;  32-bit Office 2013 full release, on Windows 7 x64.

    Hope this gets patched soon as we run very large automation workbooks in the area of 80-300MB file size, 8-15 worksheets, pivots, charts, and sometimes 30-50K records on each of 2-5 sheets.

    We were hoping for performance improvements in 2013 as we already hit memory error issues running in 2010, even in .xlsb format.

    I'll also put in the plug / request for the ability to have BOTH x64 and x32 versions of Office products installed at the same time (not running at the same time).

    Ideally we would be able to capitalize on that wider data path and larger memory pool without all the incompatibility and version-conflict issues.

    Wednesday, December 19, 2012 7:45 PM
  • I am also seeing considerable slow down with Excel 2013 under Win 8.

    How do you release this version and not pick up on this?

    More importantly, when is this going to be patched?

    Edit: While in general Excel 2013 does seem slower, the specific issue I had was related to some custom functions in the file.  Even though I had deleted these functions from cells, Excel was running some type of calculation on them that was taking a very long time - 40-60 secs to update a relatively simple sheet.  When I pressed the escape key, the calculation would stop and throw up an error and take me to the VBA screen with the custom function.  These custom functions were working fine under 2007 and never gave an error and weren't slow to calculate.

    Edit2: Going to try and replicate this with a simple sheet, but it looks like it's some type of issue with the Auto calculation, if I turn off Auto calc and put it on manual and hit F9, it takes less than a second to calculate the sheet (including the custom functions), compared to over a minute when on Auto calc.

    • Edited by Paul_858 Monday, January 14, 2013 5:30 PM
    Thursday, January 10, 2013 11:36 PM
  • FYI - also have a terrible time; running spreadsheets which worked fine on Windows 7 / Excel 2010. Now has essentially frozen excel (2013 running on Windows 8). It's not a workable situation.
    Wednesday, February 27, 2013 5:43 PM
  • @Mirek,

    Your test is not really checking Excel calculation speed: its checking the time taken to make a call to Application.Calculate.

    If you change

    ws.Range("A1").Formula = "=Rand()"

    to

    ws.Range("A1:A100000").Formula = "=Rand()"

    and run the loop once instead of 100000 times you will see:

    • It runs a lot quicker (0.016 seconds compared to 9.4 seconds) even though its calculating the same number of formulas.
    • The calculation time is the same in Excel 2010 as Excel 2013

    So what has happened is that the overhead for each VBA call to the Excel object model has increased from Excel 2010 to Excel 2013, but the calculation speed is the same.


    Charles Excel MVP The Excel Calculation Site http://www.decisionmodels.com/

    Thursday, February 28, 2013 2:58 PM
  • So what has happened is that the overhead for each VBA call to the Excel object model has increased from Excel 2010 to Excel 2013......


    Charles Excel MVP The Excel Calculation Site http://www.decisionmodels.com/

    Good catch Charles, but I think that's a bug (above).

    Rationale: There have been no significant changes to the Object Model for 2013, have there ?

    Thursday, February 28, 2013 4:21 PM
  • I don't think it's a question of the number of extensions to the object model.

    More likely to be other changes to the excel internals in 2013 such as animation, integration of the powerpivot engine, javascript apps (apps for office) etc etc.

    The overhead per call to the object model seems to have been steadily increasing since XL97.

    (http://fastexcel.wordpress.com/2012/11/09/getting-cell-data-with-vba-and-c-benchmarking-excel-2013/)


    Charles Excel MVP The Excel Calculation Site http://www.decisionmodels.com/

    Friday, March 01, 2013 1:44 PM
  • Extremely noteworthy: Excel 2010(32) Cell by Cell vs. Cell Block write.
    Excel 2010(32) is the slowest of all releases for writing single cells.

    Could this be a result of that new message that is being thrown (previous post on this forum)?
    It appears they pulled that in 2013....which explains the performance improvement.

    Tuesday, March 05, 2013 3:03 PM
  • Charles,

    Thank you for your contribution.  I don't think we're dealing here with overhead attaching to all VBA calls.  For example, take my original loop, and replace:

    Application.Calculate

    with

    s = Application.Version

    The new test actually runs faster on Excel 2013 than it does on Excel 2010 (0.2 vs. 0.3 seconds.)

    You've shown that the slowndown in Excel 2013 doesn't depend on the number of calculations, so I think the conclusion must be that there is overhead attaching to each calculation, and that overhead takes more time in Excel 2013 than it does in Excel 2010.

    BTW, it seems to me that by now MS has taken steps to improve the situation.  Testing with the latest build of Excel 2013 (Excel 15.0.4454.1503 MSO 15.0.4481.1001), and comparing with Excel 2010, the slowdown seems to be only 10-20%.  Thank you Microsoft developers!

    On the other hand, both Excel 2010 and Excel 2013 seems twice as slow when running them first on Windows 7, and then on Windows 8.  Microsoft developers, could you also address that, please?

    Mirek

    Wednesday, April 10, 2013 12:06 PM
  • On the other hand, both Excel 2010 and Excel 2013 seems twice as slow when running them first on Windows 7, and then on Windows 8.  Microsoft developers, could you also address that, please?

    Mirek

    I didn't quite understand that statement. Are you indicating Excel 13 runs faster on XP or what ?
    Wednesday, April 10, 2013 6:18 PM
  • I meant (Excel 2010 + Windows 7) is much faster than (Excel 2010 + Windows 8).

    Also (Excel 2013 + Windows 7) is much faster than (Excel 2013 + Windows 8).

    Thursday, April 11, 2013 8:21 AM
  • Yet just another reason for the failure of Windows 8.
    Thursday, April 11, 2013 1:25 PM
  • I also have the same problem T_T Any fix on this?? I do a lot of scientific programming work through the office products, and the performance of 2013 Office-64 on Win8-64 is still sloooooooooow in comparison to 2010 Office. I was running 2010 Office-32 before on Win8-64 and now this is even worse. Running on a thinkpad W520 with i7-XM processor, 16GB ram, etc. a beast and still so slow... I get a run-time for the above example of 15.1 sec.

    Microsoft, or anyone in the know, what is going on with a solution to this? Are people working on it??

    • Edited by ChE Junkie Wednesday, July 24, 2013 11:02 PM Performance Issue
    Wednesday, July 24, 2013 10:59 PM
  • Starngely, I have the oppposite problem. In my office, I am using Office2013x64+Windows8x64 and runs a vba code in some seconds. In my home, I have a machine with some awsome hardware and it runs the same code within a minute with Office2013x64+Windows7x64 combination.

    Wednesday, July 31, 2013 1:49 PM
  • I am having the same problem here. Running Excel 2010 on Windows XP with Dual Core and 2 Gig Ram and one of my bigger macros takes 32seconds to run. At home on the ASUS Laptop Windows 8 Excel 2013, Quad Core, 8Gig Ram and it is over 3 minutes. 

    On top of that even just click from one cell to the next and I have a lag on the active cell border selection box. I'm a lean machine on Excel 2010. Disappointed.

    Thursday, August 01, 2013 11:18 AM
  • Hi

    Does anyone know if there is a fix? I see this problem has been around for over a year? 

    It is a major issue as it seems to recalculate every cell in every workbook everytime I scroll through a cell, cange a cell in any other unlinked workbook etc. 

    thanks


    Wednesday, September 11, 2013 5:41 AM
  • I am facing the same issue. We created an add-in for excel 2010 and it works great, with no issues. On Excel 2013(Windows 7 or Windows 8) the performance is very slow.  The add-in works fine, but it is terribly slow.  We have many customer using this software and we receive many complaints regarding this issue.  It pains me to tell them there is nothing we can do to increase it performance, it is on Microsoft's end.  Because of this, we are now in the process of creating a standalone version of the software and steering away from the add-in completely.  All of this would not be necessary if the performance of Excel 2013 was simply taken seriously.  
    • Edited by dlmcdan Wednesday, September 18, 2013 1:12 PM
    Wednesday, September 18, 2013 1:11 PM
  • @dlmcdan

    Have you profiled your addin to find out which parts of the code are slow?

    (My addins run about the same speed in 2013 compared to 2010)


    Charles Excel MVP The Excel Calculation Site http://www.decisionmodels.com/

    Wednesday, September 18, 2013 1:39 PM
  • Guys,

     I have changed the multi threaded calculation to manual and made it as 50. I am pretty sure that I have only 4 processors in my laptop. But my code works better than my previous calculation.

    Monday, October 21, 2013 2:51 PM
  • I am in a similar situation with 2013; I have a spreadsheet that is distributed to many people; the VBA code goes through a validation routine (VBA) and works a little slower than it did under 2010.  However, once it passes validation it displays a login screen for the user to enter their user id and password before going to the next step to upload the data to the database.  What happens is that between the time that the validation pop up window is displayed the icon/hour glass spins for about a minute.  The login box is then displayed with no input fields.  The input fields display after quite a few seconds, sometimes up to 5 minutes or longer, but you can't enter anything in them.  Finally at some point in time in the future the fields allow entry and you can proceed.  This is all VBA code, about 5 lines of code from the end of the Validation Pop Up and display the login box.  While testing this, I've discovered that the CPU Performance is maxed out at 100% percent, and Excel's memory footprint is climbing pretty rapidly.  The only solution I have been able to do to resolve this issue is to uninstall Office 2013, and re-install it from my base install and not allow it to apply updates.

    It doesn't seem that this is an important thing for Microsoft to address as I see threads on this issue for over a year now.

    Monday, November 25, 2013 5:28 PM
  • I'm still having this problem, even after the Office 2013 SP1 upgrade.  I've got an i7 8-core and it takes 6-8 times longer to calculated the same file in Excel 2013 as it does on the same machine same file running Excel 2010.  Microsoft FIX YOUR PROBLEM !!!!  


    Tuesday, July 01, 2014 1:56 PM
  • I am still having this issue. 

    Excel 2013 on Windows 8.1 is taking 10+ min. to run a VBA application that used to take 2 min. tops on Excel 2007 with Windows 7.

    I also have serious other serious macro issues as well.

    Avoid Excel 2013 on Windows 8.

    Monday, August 04, 2014 9:28 PM