<<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