[Libreoffice-bugs] [Bug 45607] New: LibreOffice calc significantly slower than OpenOffice calc

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Sat Feb 4 10:15:51 CET 2012


https://bugs.freedesktop.org/show_bug.cgi?id=45607

             Bug #: 45607
           Summary: LibreOffice calc significantly slower than OpenOffice
                    calc
    Classification: Unclassified
           Product: LibreOffice
           Version: LibO 3.4.5 release
          Platform: x86-64 (AMD64)
        OS/Version: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: medium
         Component: Spreadsheet
        AssignedTo: libreoffice-bugs at lists.freedesktop.org
        ReportedBy: xabc123 at gazeta.pl


Curious about the LibreOffice, I wanted to run my application which was created
in OpenOffice calc. It was a surprise to see a significant difference in
execution time between LO and OO. After isolating the problem, I could measure
the performance in both packages.

Please run the following test macro which fills an area of 200 rows with a
formula in the column 1 and a string in the column 2.

Execution time on my computer:

OpenOffice  3.3.0 -  8 seconds
LibreOffice 3.4.5 - 15 seconds

'**************************************************************************

Sub test
 Const END_ROW As Integer = 199

 Dim document   As Object
 Dim dispatcher As Object

 document   = ThisComponent.CurrentController.Frame
 dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

 Dim oDoc   As Object
 Dim oSheet As Object
 Dim oRange As Object
 Dim oCell  As Object

 oDoc   = ThisComponent
 oSheet = oDoc.getCurrentController.ActiveSheet

 ' Select and clean the test cell range

 oRange = oSheet.getCellRangeByPosition(0, 0, 1, END_ROW)
 oDoc.CurrentController.select(oRange)

 dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

 Dim fun As String

 fun = "=SHOW_NUMBER(ROW(); ISBLANK(INDIRECT(""B"" & ROW())))"

 Dim start_time As Long

 start_time = GetSystemTicks()

 ' Fill the test cell range:
 ' column 1: formula for displaying the row number
 ' column 2: a constant string

 Dim row As Integer

 For row = 0 To END_ROW
  oRange = oSheet.getCellRangeByPosition(0, row, 0, row)
  oDoc.CurrentController.select(oRange)
  oCell = oSheet.getCellByPosition(0, row)
  oCell.setFormula(fun)
  oCell = oSheet.getCellByPosition(1, row)
  oCell.String = "abc"
 Next row

 oRange = oSheet.getCellRangeByPosition(0, 0, 0, 0)
 oDoc.CurrentController.select(oRange)

 oRange = oDoc.createInstance("com.sun.star.sheet.SheetCellRanges")
 oDoc.CurrentController.select(oRange)

 Print "Test executed in " + (GetSystemTicks() - start_time)/1000 + " s"
End Sub

'**************************************************************************

Function show_number(ByVal nr As Integer, ByVal empty As Boolean) As String
 show_number = ""
 If Not empty Then
  show_number = Trim(Str(nr)) + "."
 End If
End Function

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the Libreoffice-bugs mailing list