Performance
https://www.deviantart.com/cannikin1701/art/Discovery-sSpore-Jump-719880707
How to find
the performance problem?
Tools
Tools mainly used
●
py-spy
runtime profiler for Python programs
●
repoze.profile
Python profiler integration with WSGI
●
dis
Disassembler for Python bytecode
py-spy
●
Overall mix of the whole application performance
●
Unix „top“ like output of running python program
●
recording mode: for later analyzing
●
Able to attach to live process w/o slowing down
Plone
repoze.profile
●
Python profiler integration as WSGI
middleware
●
Slows down the application
●
Ability to profile a single request and
analyse its call stack by count/ single call
time, accumulated time/ callee/ caller
Plone 5.2.0 to 5.2.3
plone.dexterity
●
avoid early providedBy calls
●
__getattr__ early exit on common attrs
●
caches optimized: assignable, schema cache
●
removal of superfluos threadlocal sync
Plone 5.2.1 to 5.2.2
zope.interface
●
~1.25x -1.5x __hash__ override removals on
Implementer leftover
●
~1.25x __hash__ improvement InterfaceClass
●
~5x lookup/lookupAll/subscriptions
●
memory consumption reduced (jmadden)
DEMO TIME
Future Todo‘s
●
plone.restapi has optimization potential
→ all navigation related
●
plone.registry is called too often
●
Use „python:“ expressions in all page
templates
●
More introspection
Advice:
Start introspecting your performance!
Virtual hugs and stay healthy!
(Q&A at Jitsi face2face as announced)

Plone Performance, Profiling, Power-Consumption