<<TableOfContents>> Here are current profiling results for several pages. = Developer information = == Setting up a profiling environment == How setup a profiling environment in less then 5 minutes: 1. Setup standalone server in your wiki directory 1. Open {{{moin.py}}}, uncomment the hotshot profile lines: {{{ # Hotshot profile (default commented) import hotshot hotshotProfile = hotshot.Profile("moin.prof") }}} 1. Copy {{{MoinMoin/scripts/print_stats.py}}} to your wiki dir == How to run a profile == 1. Run {{{moin.py}}} 1. Do some request using a browsers or ab 1. Quit {{{moin.py}}} 1. Run {{{python print_stats.py moin.prof}}} = Profiles = * /CgiProfiles * /EmptyPage - The general overhead of the wiki * /HugePage - Very long page, only text * /RecentChanges - The most important page, dynamic * /FrontPage - The most visited page * /SearchTitles - Very important for a wiki, should be very fast * /SearchText - Very important for a wiki * /TitleIndex - Page with links to all pages * /CategoryPage - Using search macros * /GetRevCallStack - Get_Rev is the most used function in our code. Mostly because it is called too often and in useless cases. * /OldProfiles - old stuff we should sort or delete * /FileSystem - how MoinMoin accesses the file system == System information == See /SystemInformation for the configuration of the developers which publish profile data. = Profiling hints = The most annoying problem are the regressions compared to MoinMoin 1.2.x. So we should profile a simple test case for 1.2 and 1.3. Then we can compare the profiles and spot the new bottle necks. = Things to improve = * Use a caching SRE compiler. Bastian prepared some code ... * SRE calls are in the top 5 of the Moin 1.3 profile == Groups == Things to fix: * check on save if any group file haas changed and update only the changed file * make ACL code load groups only when needed == Speed up CGI == <!> should be updated after import stuff fix, as it affects lots of code. * If you request the standard FrontPage: * 33% of the time is spent in `request.__init__` <<Date(2004-12-17T22:32:12Z)>> * 50% in `RequestBase.__init__` * 50% in `RequestCGI.__init__` * it is not easy to optimise that * much of it is config loading * 27% of the time is spent in `wikiutil.send_title` <<Date(2004-12-17T22:32:12Z)>> * 66% in `modern:Theme.header` * editbar and navibar are slow