LOK: Add a tiled rendering testbench.
Change-Id: I631c0506f427d974c3dd4c75484aa25603100895
This commit is contained in:
parent
213be0be8e
commit
87fad21582
@ -86,6 +86,7 @@ $(eval $(call gb_Helper_register_executables_for_install,OOO,ooo, \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Helper_register_executables,OOO, \
|
||||
$(if $(filter LINUX,$(OS)), tilebench) \
|
||||
$(call gb_Helper_optional,CRASHREP,crashrep) \
|
||||
gnome-open-url.bin \
|
||||
$(if $(filter-out ANDROID IOS MACOSX WNT,$(OS)),oosplash) \
|
||||
|
99
android/mobile-config.py
Executable file
99
android/mobile-config.py
Executable file
@ -0,0 +1,99 @@
|
||||
#!/usr/bin/python
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
# this tool rips out configuration pieces that are not useful for
|
||||
# a mobile viewer / editing application without a full UI.
|
||||
#
|
||||
# ideally the postprocess/ makefile would cope with this but its
|
||||
# already over-complicated by rampant conditionals.
|
||||
|
||||
import sys
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
|
||||
main_xcd_discard = [
|
||||
'org.openoffice.Office/TableWizard', # huge
|
||||
|
||||
'org.openoffice.Office/WebWizard',
|
||||
'org.openoffice.Office.DataAccess/Drivers', # no database
|
||||
'org.openoffice.Office/Addons', # no addons
|
||||
|
||||
# no conventional UI; reverse sorted by size
|
||||
'org.openoffice.Office.UI/GenericCommands',
|
||||
'org.openoffice.Office/Accelerators',
|
||||
'org.openoffice.Office/UI',
|
||||
|
||||
'org.openoffice.Office.UI/DrawImpressCommands',
|
||||
'org.openoffice.Office.UI/Sidebar',
|
||||
'org.openoffice.Office.UI/ChartCommands',
|
||||
'org.openoffice.Office.UI/DbuCommands',
|
||||
'org.openoffice.Office.UI/Controller',
|
||||
'org.openoffice.Office/UI',
|
||||
'org.openoffice.Office.UI/StartModuleCommands',
|
||||
'org.openoffice.Office.UI/BasicIDEWindowState',
|
||||
'org.openoffice.Office.UI/GenericCategories',
|
||||
'org.openoffice.Office.UI/ChartWindowState',
|
||||
'org.openoffice.Office.UI/Factories',
|
||||
'org.openoffice.Office.UI/BaseWindowState',
|
||||
'org.openoffice.Office.UI/BasicIDECommands',
|
||||
'org.openoffice.Office.UI/Sidebar',
|
||||
'org.openoffice.Office.UI/BibliographyCommands',
|
||||
'org.openoffice.Office.UI/DbQueryWindowState',
|
||||
'org.openoffice.Office.UI/WindowState',
|
||||
'org.openoffice.Office.UI/Controller',
|
||||
'org.openoffice.Office.UI/DbRelationWindowState',
|
||||
'org.openoffice.Office.UI/DbTableWindowState',
|
||||
'org.openoffice.Office.UI/DbTableDataWindowState',
|
||||
'org.openoffice.Office.UI/DbBrowserWindowState',
|
||||
'org.openoffice.Office.UI/WindowContentFactories',
|
||||
'org.openoffice.Office.UI/Factories',
|
||||
'org.openoffice.Office.UI/StartModuleWindowState',
|
||||
'org.openoffice.Office.UI/GlobalSettings',
|
||||
'org.openoffice.Office.UI/Commands',
|
||||
'org.openoffice.Office.UI/BibliographyCommands',
|
||||
'org.openoffice.Office.UI/StartModuleCommands',
|
||||
'org.openoffice.Office.UI/DrawImpressCommands',
|
||||
'org.openoffice.Office.UI/BasicIDECommands',
|
||||
'org.openoffice.Office.UI/GenericCommands',
|
||||
'org.openoffice.Office.UI/ChartCommands',
|
||||
'org.openoffice.Office.UI/DbuCommands',
|
||||
'org.openoffice.Office.UI/BibliographyWindowState',
|
||||
'org.openoffice.Office.UI/StartModuleWindowState',
|
||||
'org.openoffice.Office.UI/DbTableDataWindowState',
|
||||
'org.openoffice.Office.UI/DbRelationWindowState',
|
||||
'org.openoffice.Office.UI/DbBrowserWindowState',
|
||||
'org.openoffice.Office.UI/BasicIDEWindowState',
|
||||
'org.openoffice.Office.UI/DbTableWindowState',
|
||||
'org.openoffice.Office.UI/DbQueryWindowState',
|
||||
'org.openoffice.Office.UI/ChartWindowState',
|
||||
'org.openoffice.Office.UI/BaseWindowState',
|
||||
'org.openoffice.Office.UI/GenericCategories',
|
||||
'org.openoffice.Office.UI/Category',
|
||||
]
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
tree = ET.parse(sys.argv[1])
|
||||
root = tree.getroot()
|
||||
|
||||
print "Foo\n"
|
||||
saved = 0
|
||||
total = 0
|
||||
for child in root:
|
||||
section = child.attrib['{http://openoffice.org/2001/registry}name']
|
||||
package = child.attrib['{http://openoffice.org/2001/registry}package']
|
||||
size = len(ET.tostring(child));
|
||||
total = total + size
|
||||
key = '%s/%s' % (package, section)
|
||||
if key in main_xcd_discard:
|
||||
root.remove(child)
|
||||
print 'removed %s - saving %d' % (key, size)
|
||||
saved = saved + size
|
||||
|
||||
print "saved %d of %d bytes: %2.f%%" % (saved, total, saved*100.0/total)
|
||||
tree.write(sys.argv[2], 'UTF-8', True)
|
||||
|
32
libreofficekit/Executable_tilebench.mk
Normal file
32
libreofficekit/Executable_tilebench.mk
Normal file
@ -0,0 +1,32 @@
|
||||
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
|
||||
$(eval $(call gb_Executable_Executable,tilebench))
|
||||
|
||||
$(eval $(call gb_Executable_set_include,tilebench,\
|
||||
$$(INCLUDE) \
|
||||
-I$(SRCDIR)/desktop/inc \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Executable_use_libraries,tilebench,\
|
||||
libreofficekitgtk \
|
||||
sal \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Executable_add_libs,tilebench,\
|
||||
-lm \
|
||||
-ldl \
|
||||
-lpthread \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Executable_add_exception_objects,tilebench,\
|
||||
libreofficekit/qa/tilebench/tilebench \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
@ -22,6 +22,10 @@ $(eval $(call gb_Module_add_targets,libreofficekit,\
|
||||
))
|
||||
endif # ($(ENABLE_GTK),)
|
||||
|
||||
$(eval $(call gb_Module_add_targets,libreofficekit,\
|
||||
Executable_tilebench \
|
||||
))
|
||||
|
||||
endif # ($(OS),LINUX)
|
||||
|
||||
# vim: set ts=4 sw=4 et:
|
||||
|
90
libreofficekit/qa/tilebench/tilebench.cxx
Normal file
90
libreofficekit/qa/tilebench/tilebench.cxx
Normal file
@ -0,0 +1,90 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <vector>
|
||||
#include <osl/time.h>
|
||||
#include <LibreOfficeKit/LibreOfficeKitInit.h>
|
||||
#include <LibreOfficeKit/LibreOfficeKit.hxx>
|
||||
|
||||
using namespace lok;
|
||||
|
||||
static int help()
|
||||
{
|
||||
fprintf( stderr, "Usage: tilebench <absolute-path-to-libreoffice-install> [path to document]\n" );
|
||||
fprintf( stderr, "renders a selection of small tiles from the document, checksums them and times the process\n" );
|
||||
return 1;
|
||||
}
|
||||
|
||||
static double getTimeNow()
|
||||
{
|
||||
TimeValue aValue;
|
||||
osl_getSystemTime(&aValue);
|
||||
return (double)aValue.Seconds +
|
||||
(double)aValue.Nanosec / (1000*1000*1000);
|
||||
}
|
||||
|
||||
int main( int argc, char* argv[] )
|
||||
{
|
||||
struct TimeRecord {
|
||||
const char *mpName;
|
||||
double mfTime;
|
||||
|
||||
TimeRecord() : mpName(NULL), mfTime(getTimeNow()) { }
|
||||
explicit TimeRecord(const char *pName) :
|
||||
mpName(pName ), mfTime(getTimeNow()) { }
|
||||
explicit TimeRecord(const TimeRecord *pSrc) :
|
||||
mpName(pSrc->mpName), mfTime(pSrc->mfTime) { }
|
||||
};
|
||||
std::vector< TimeRecord > aTimes;
|
||||
if( argc < 2 ||
|
||||
( argc > 1 && ( !strcmp( argv[1], "--help" ) || !strcmp( argv[1], "-h" ) ) ) )
|
||||
return help();
|
||||
|
||||
if ( argv[1][0] != '/' )
|
||||
{
|
||||
fprintf(stderr, "Absolute path required to libreoffice install\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
aTimes.push_back(TimeRecord("initialization"));
|
||||
Office *pOffice = lok_cpp_init(argv[1]);
|
||||
aTimes.push_back(TimeRecord());
|
||||
|
||||
if (argv[2] != NULL)
|
||||
{
|
||||
aTimes.push_back(TimeRecord("load document"));
|
||||
Document *pDocument(pOffice->documentLoad(argv[2]));
|
||||
aTimes.push_back(TimeRecord());
|
||||
|
||||
aTimes.push_back(TimeRecord("destroy document"));
|
||||
delete pDocument;
|
||||
aTimes.push_back(TimeRecord());
|
||||
}
|
||||
|
||||
delete pOffice;
|
||||
|
||||
double nTotal = 0.0;
|
||||
fprintf (stderr, "profile run:\n");
|
||||
for (size_t i = 0; i < aTimes.size() - 1; i++)
|
||||
{
|
||||
double nDelta = aTimes[i+1].mfTime - aTimes[i].mfTime;
|
||||
fprintf (stderr, " %s - %2.4f(ms)\n", aTimes[i].mpName, nDelta * 1000.0);
|
||||
if (aTimes[i+1].mpName == NULL)
|
||||
i++; // skip it.
|
||||
nTotal += nDelta;
|
||||
}
|
||||
fprintf (stderr, "Total: %2.4f(s)\n", nTotal);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
Loading…
x
Reference in New Issue
Block a user