Issue 98402 - PDF Export: Dramatic Performance Regression
Summary: PDF Export: Dramatic Performance Regression
Status: CLOSED FIXED
Alias: None
Product: Writer
Classification: Application
Component: save-export (show other issues)
Version: DEV300 m39
Hardware: All All
: P2 Trivial (vote)
Target Milestone: ---
Assignee: h.ilter
QA Contact: issues@sw
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-01-23 13:13 UTC by kai.sommerfeld
Modified: 2013-08-07 14:43 UTC (History)
5 users (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments
bugdoc, 49 pages, 100 jpeg pictures (68.53 KB, application/vnd.oasis.opendocument.text)
2009-01-23 13:16 UTC, kai.sommerfeld
no flags Details

Note You need to log in before you can comment on or make changes to this issue.
Description kai.sommerfeld 2009-01-23 13:13:53 UTC
When exporting documents containing JPEG files to PDF, in DEV300 (checked m39)
performance decreased dramatically, compared to OOO300.

OOO300 m15 : Lossless JPEG Compression : 3 secs
OOO300 m15 : 90% quality JPEG compression : 10 secs
DEV300 m39 : Lossless JPEG Compression : 2 minutes
DEV300 m39 : 90% quality JPEG compression : 6 minutes
Comment 1 kai.sommerfeld 2009-01-23 13:16:35 UTC
Created attachment 59626 [details]
bugdoc, 49 pages, 100 jpeg pictures
Comment 2 Oliver Specht 2009-01-23 15:07:05 UTC
As discussed with sj reassigned
Comment 3 sven.jacobi 2009-01-26 13:30:22 UTC
sj->od: If exporting the test document to pdf the jpeg import is called ~5000
times about 100 should be sufficient. It seams that for each page the whole
bunch of graphics are imported once.

	swmi.dll!SwGrfNode::ImportGraphic(SvStream & rStrm={...})  Line 408	C++
 	swmi.dll!SwGrfNode::SwapIn(unsigned char bWaitForData='')  Line 481 + 0xf
bytes	C++
 	swmi.dll!SwNoTxtFrm::PaintPicture()  + 0xdb bytes	C++
 	swmi.dll!SwNoTxtFrm::Paint()  + 0x2b7 bytes	C++
 	swmi.dll!SwLayoutFrm::Paint(const SwRect & rRect={...})  Line 3278	C++
 	swmi.dll!SwFlyFrm::Paint(const SwRect & rRect={...})  Line 3697	C++
 	swmi.dll!SwVirtFlyDrawObj::wrap_DoPaintObject()  + 0x5f bytes	C++
 
swmi.dll!drawinglayer::primitive2d::SwVirtFlyDrawObjPrimitive::get2DDecomposition()
 + 0xe bytes	C++
 
drawinglayermi.dll!drawinglayer::processor2d::VclMetafileProcessor2D::processBasePrimitive2D(const
drawinglayer::primitive2d::BasePrimitive2D & rCandidate={...})  Line 1658 +
0x1e bytes	C++
 	drawinglayermi.dll!drawinglayer::processor2d::BaseProcessor2D::process(const
com::sun::star::uno::Sequence<com::sun::star::uno::Reference<com::sun::star::graphic::XPrimitive2D>
> &
rSource=[100]({0x0e8f9958},{0x0f040eb0},{0x0e8f9918},{0x0f040c70},{0x0e8f9cd8},{0x0f040cf0},{0x0fa95334},{0x0f040430},{0x0b02bccc},{0x0b02bd0c},{0x0f040870},{0x0f0408b0},{0x0f0408f0},{0x0b02bf0c},{0x0f0409b0},{0x0e8f9458},{0x0e8f9498},{0x0fa95034},{0x0b02becc},{0x0f040d70},{0x0b02be8c},{0x0dbb3a14},{0x0db94790},{0x0db94690},{0x0db94610},{0x0db94510},{0x0db94210},{0x0db94450},{0x0db94390},{0x0db94250},...,...))
 Line 85	C++
 
svxmi.dll!sdr::contact::ObjectContactOfPageView::DoProcessDisplay(sdr::contact::DisplayInfo
& rDisplayInfo={...})  Line 259	C++
 
svxmi.dll!sdr::contact::ObjectContactOfPageView::ProcessDisplay(sdr::contact::DisplayInfo
& rDisplayInfo={...})  Line 143	C++
 	svxmi.dll!SdrPageWindow::RedrawLayer(const unsigned char * pId=0x0162cc30,
sdr::contact::ViewObjectContactRedirector * pRedirector=0x00000000)  Line 398	C++
 	svxmi.dll!SdrPageView::DrawLayer(unsigned char nID='', OutputDevice *
pGivenTarget=0x0e5ff4a8, sdr::contact::ViewObjectContactRedirector *
pRedirector=0x00000000)  Line 413	C++
 	swmi.dll!SwViewImp::PaintLayer()  + 0x142 bytes	C++
 	swmi.dll!SwRootFrm::Paint(const SwRect & rRect={...})  Line 2977	C++
 	swmi.dll!ViewShell::Prt()  + 0xa4e bytes	C++
 	swmi.dll!SwXTextDocument::render()  + 0x461 bytes	C++
Comment 4 Oliver-Rainer Wittmann 2009-01-27 10:28:00 UTC
defect cause found together with AW:
During PDF export the check which object have to painted for a certain view
range does not work as expected. The view range is not set to the area, which is
painted.

defect cause has been introduced in DEV300m30.
Comment 5 Oliver-Rainer Wittmann 2009-01-27 11:30:23 UTC
OD->AW:
As figured out together, in method ObjectContactOfPageView::DoProcessDisplay(..)
the clip region needs to be used as the view range, when exporting to PDF.
Please take over - Thx.
Comment 6 Armin Le Grand 2009-01-27 14:28:03 UTC
AW: Checking. Adding needed code to ObjectContactOfPageView::DoProcessDisplay.
Need to test with the other PDF exports, of course. Experimenting...
Comment 7 Armin Le Grand 2009-01-27 16:04:44 UTC
AW: Needed to add partial changes from #i97982# from aw062 to get the
isOutputToPDFFile() function at OCs. Implemented and rebuilt SVX and
applications incompatible. Works as expected, checked with SC and SD, too.
Checking in.
Comment 8 Armin Le Grand 2009-01-27 16:09:57 UTC
AW: Checked in, marked aw063 incompatible from svx, done.
Comment 9 Armin Le Grand 2009-01-30 11:06:20 UTC
AW->WG: Please verify. This is a SW task, evtl. also forward to SW testing.
Comment 10 wolframgarten 2009-01-30 13:10:26 UTC
Reassigned. Please verify in aw063. Thanks!
Comment 11 wolframgarten 2009-01-30 14:10:37 UTC
Reassigned. Please verify.
Comment 12 stefan.baltzer 2009-02-02 09:53:12 UTC
SBA->HI: As discussed, please proceed, thx.
Comment 13 h.ilter 2009-02-02 10:38:47 UTC
Verified with cws aw063 = ok
Comment 14 amy2008 2009-03-27 10:18:02 UTC
Verified in DEV310m7 on WinXP and Fedora.
Export to pdf file normally.
Closing
Li Meiying