[IronPython] Performances and Profiling of ReportLab under IronPython

Marco Parenzan marco.parenzan at libero.it
Thu Aug 20 04:46:15 PDT 2009


Boys I have a news.

 

Executing code interactive, I have an important result:

-          Launching IPY: 3seconds

-          from reportlab.graphics.shapes import Drawing, String: ¾ seconds

-          renderPDF.drawToFile(d,
"C:\users\marco.parenzan\desktop\uuu.pdf", "HellO"): 1 second!!!!!!!!!!!

(all timings are my counting in my mind!)

 

I have not taken in count this! Sorry, but these are my first seriour
experiments with IPY.

So I can:

-          preload IPY engine (not a bad idea)

-          preload reportlab (also not bad). I can execute statement from
engine(“from reportlab.graphics.shapes import Drawing, String”), but, is
there an API that allow making this via hosting (scriptscope.import?)?

Where can I read about long startup time?

What about import? Why long time? Which are the differences with CPython?

 

Thanks in advance

 

                Marco [dot] Parenzan [at] libero [dot] it

 

From: Marco Parenzan [mailto:marco.parenzan at libero.it] 
Sent: giovedì 20 agosto 2009 11.26
To: 'users at lists.ironpython.com'
Subject: Performances and Profiling of ReportLab under IronPython

 

Dear All,

 

I downloaded IPY2.6beta2 to test this script:

 

from reportlab.graphics.shapes import Drawing, String

from reportlab.graphics import renderPDF

 

d = Drawing(100, 100)

s = String(50, 50, "Hello World", textAlign='middle')

 

d.add(s)

 

renderPDF.drawToFile(d, "HelloWorld.pdf", "HW")

 

IPY 2.0.2 takes 20 seconds; IPY 2.6beta2 about 8! But it takes
long....CPython takes less that a second.

 

I have executed profiling from Curt post
<http://blogs.msdn.com/curth/archive/2009/03/29/an-ironpython-profiler.aspx>
. This is the result (first 15 rows, sorted by calls DESC):

 


Name

Inclusive

Exclusive

Calls


type Builtin: method: chr(Int32)

46543

46543

1453


type Builtin: method: ord(Object)

17910

17910

888


type List: method: append(Object)

11752

11752

468


type Builtin: method: __import__(CodeContext, String, Object, Object,
Object, Int32)

209641377

209641377

380


type Builtin: method: hasattr(CodeContext, Object, String)

771507

771507

317


type Builtin: method: divmod(CodeContext, Object, Object)

99164

99164

262


type PythonDictionary: method: has_key(Object)

48355

48355

218


type Builtin: method: len(Object)

42922

42922

189


type StringOps: method: join(String, List)

19591

19591

182


module colors: class Color: def __init__(self, red, green, blue)

17359

8780

150


module colors: def HexColor(val, htmlOnly)

145565

6839

150


type Builtin: method: isinstance(CodeContext, Object, Object)

6342

6342

146


module pdfdoc: def format(element, document, toplevel, InstanceType)

5712898

6437

114


module pdfutils: def _escape(s): def <lambda$840>(c, d)

4710

2922

108


type StringOps: method: lower(String)

3266

3266

100

 

Sorted by Inclusive:

 


Name

Inclusive

Exclusive

Calls


type Builtin: method: __import__(CodeContext, String, Object, Object,
Object, Int32)

209641377

209641377

380


module renderPDF01

61950185

256

1


module shapes

45433217

1455217

1


module __init__

40333697

53011

8


module site

18405008

1141596

1


module renderPDF: def drawToFile(d, fn, msg, showBoundary, autoSize)

13208473

210

1


module flowables

13108755

64681

1


module os

10374697

101300

1


module paragraph

9988916

104182

1


module colors

9227303

9866

1


module utils

7020300

220690

1


module canvas: class Canvas: def save(self)

6521990

49

1


module pdfdoc: class PDFDocument: def SaveToFile(self, filename, canvas)

6493142

169

1


module pdfdoc: class PDFDocument: def GetPDFData(self, canvas)

6215312

142

1


module pdfdoc: def format(element, document, toplevel, InstanceType)

5712898

6437

114

 

I have not experience: any idea on improving performances? Thanks

 

                Marco [dot] Parenzan [at] libero [dot] it

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ironpython.com/pipermail/users-ironpython.com/attachments/20090820/c5723dee/attachment-0001.htm>


More information about the Users mailing list