Testing with the biggest page in the standard wiki except BadContent. See http://moinmaster.wikiwikiweb.de/PageSize.
The page does not contain any macros, it is the best case for caching system.
All profiles run
ab -n 101 -c 1 http://localhost:8000/EmptyPage
Using standalone.py from current code so we can compare profiles.
Release 1.3.0
Requests per second: 5.80 [#/sec] (mean)
1361772 function calls (1332072 primitive calls) in 6.059 CPU seconds
Ordered by: cumulative time, internal time, call count
List reduced from 271 to 40 due to restriction <40>
ncalls tottime percall cumtime percall filename:lineno(function)
100 0.018 0.000 5.950 0.060 request.py:654(run)
100 0.041 0.000 5.835 0.058 Page.py:650(send_page)
100 0.020 0.000 3.120 0.031 Page.py:982(send_page_content)
100 0.093 0.001 2.964 0.030 WhyWikiWorks:2(?)
29800/10900 1.589 0.000 2.363 0.000 Page.py:77(get_rev)
100 0.026 0.000 2.260 0.023 wikiutil.py:902(send_title)
8900 0.072 0.000 2.148 0.000 Page.py:320(exists)
6000 0.100 0.000 2.145 0.000 text_html.py:212(pagelink)
6600 0.117 0.000 2.137 0.000 Page.py:550(link_to)
21800/11000 0.425 0.000 1.957 0.000 Page.py:108(getPagePath)
700 0.010 0.000 1.633 0.002 security.py:52(<lambda>)
700 0.004 0.000 1.481 0.002 wikiacl.py:185(may)
700 0.006 0.000 1.476 0.002 request.py:133(__getattr__)
100 0.004 0.000 1.470 0.015 request.py:540(initdicts)
100 0.006 0.000 1.466 0.015 wikidicts.py:289(scandicts)
100 0.031 0.000 1.448 0.014 pickle.py:1392(loads)
100 0.531 0.005 1.417 0.014 pickle.py:859(load)
2600 0.629 0.000 0.719 0.000 pysupport.py:37(importName)
1200 0.038 0.000 0.701 0.001 wikiutil.py:508(importPlugin)
8000 0.302 0.000 0.572 0.000 pickle.py:1221(load_setitems)
900 0.005 0.000 0.570 0.001 base.py:219(macro)
900 0.011 0.000 0.566 0.001 wikimacro.py:98(execute)
100 0.005 0.000 0.437 0.004 modern.py:38(header)
12100 0.274 0.000 0.274 0.000 pickle.py:884(marker)
1300 0.033 0.000 0.251 0.000 wikiutil.py:432(getSysPage)
31600 0.250 0.000 0.250 0.000 posixpath.py:168(exists)
1300 0.005 0.000 0.240 0.000 Page.py:187(_text_filename)
200 0.008 0.000 0.232 0.001 __init__.py:910(editbar)
7100 0.131 0.000 0.208 0.000 wikiutil.py:765(link_tag)
17000 0.109 0.000 0.161 0.000 request.py:1469(write)
100 0.001 0.000 0.160 0.002 wikiutil.py:1116(send_footer)
100 0.004 0.000 0.158 0.002 __init__.py:282(navibar)
100 0.003 0.000 0.157 0.002 modern.py:70(footer)
200 0.005 0.000 0.144 0.001 Page.py:260(lastEditInfo)
104600 0.143 0.000 0.143 0.000 posixpath.py:56(join)
700 0.009 0.000 0.141 0.000 Page.py:1208(getACL)
400 0.005 0.000 0.127 0.000 __init__.py:205(splitNavilink)
100 0.004 0.000 0.123 0.001 __init__.py:510(pageinfo)
100 0.010 0.000 0.109 0.001 request.py:1370(__init__)
117000 0.109 0.000 0.109 0.000 pickle.py:1193(load_long_binput)
Release 1.3.1
Requests per second: 8.80 [#/sec] (mean)
442052 function calls (412352 primitive calls) in 4.498 CPU seconds
Ordered by: cumulative time, internal time, call count
List reduced from 245 to 40 due to restriction <40>
ncalls tottime percall cumtime percall filename:lineno(function)
100 0.017 0.000 4.390 0.044 request.py:654(run)
100 0.041 0.000 4.276 0.043 Page.py:650(send_page)
100 0.020 0.000 3.017 0.030 Page.py:982(send_page_content)
100 0.088 0.001 2.863 0.029 WhyWikiWorks:2(?)
29800/10900 1.544 0.000 2.308 0.000 Page.py:77(get_rev)
8900 0.084 0.000 2.110 0.000 Page.py:320(exists)
6600 0.108 0.000 2.077 0.000 Page.py:550(link_to)
6000 0.090 0.000 2.073 0.000 text_html.py:212(pagelink)
21800/11000 0.412 0.000 1.912 0.000 Page.py:108(getPagePath)
100 0.025 0.000 0.811 0.008 wikiutil.py:909(send_title)
2600 0.626 0.000 0.716 0.000 pysupport.py:37(importName)
1200 0.036 0.000 0.696 0.001 wikiutil.py:515(importPlugin)
900 0.005 0.000 0.567 0.001 base.py:219(macro)
900 0.011 0.000 0.562 0.001 wikimacro.py:98(execute)
100 0.005 0.000 0.443 0.004 modern.py:38(header)
1300 0.032 0.000 0.256 0.000 wikiutil.py:432(getSysPage)
31600 0.242 0.000 0.242 0.000 posixpath.py:168(exists)
1300 0.005 0.000 0.236 0.000 Page.py:187(_text_filename)
200 0.008 0.000 0.230 0.001 __init__.py:910(editbar)
7100 0.123 0.000 0.199 0.000 wikiutil.py:772(link_tag)
700 0.010 0.000 0.196 0.000 security.py:52(<lambda>)
100 0.001 0.000 0.156 0.002 wikiutil.py:1123(send_footer)
100 0.004 0.000 0.153 0.002 __init__.py:282(navibar)
100 0.003 0.000 0.153 0.002 modern.py:70(footer)
17000 0.091 0.000 0.141 0.000 request.py:1471(write)
200 0.005 0.000 0.140 0.001 Page.py:260(lastEditInfo)
104600 0.140 0.000 0.140 0.000 posixpath.py:56(join)
700 0.009 0.000 0.140 0.000 Page.py:1208(getACL)
400 0.005 0.000 0.122 0.000 __init__.py:205(splitNavilink)
100 0.004 0.000 0.119 0.001 __init__.py:510(pageinfo)
100 0.009 0.000 0.108 0.001 request.py:1370(__init__)
100 0.005 0.000 0.095 0.001 request.py:63(__init__)
1300 0.036 0.000 0.086 0.000 __init__.py:3(?)
100 0.002 0.000 0.077 0.001 request.py:1479(finish)
100 0.075 0.001 0.075 0.001 request.py:1014(finish)
100 0.008 0.000 0.068 0.001 wiki.py:95(__init__)
100 0.001 0.000 0.066 0.001 request.py:259(loadTheme)
100 0.006 0.000 0.061 0.001 __init__.py:793(actionsMenu)
100 0.001 0.000 0.061 0.001 wikimacro.py:33(getNames)
100 0.001 0.000 0.059 0.001 wikiutil.py:565(getPlugins)
patch-510
Requests per second: 14.73 [#/sec] (mean)
341660 function calls (332060 primitive calls) in 2.686 CPU seconds
Ordered by: cumulative time, internal time, call count
List reduced from 247 to 40 due to restriction <40>
ncalls tottime percall cumtime percall filename:lineno(function)
100 0.017 0.000 2.637 0.026 request.py:670(run)
100 0.041 0.000 2.521 0.025 Page.py:767(send_page)
100 0.015 0.000 1.586 0.016 Page.py:1099(send_page_content)
100 0.109 0.001 1.544 0.015 WhyWikiWorks:2(?)
6000 0.058 0.000 1.105 0.000 text_html.py:212(pagelink)
11600 0.069 0.000 1.102 0.000 Page.py:244(getPageStatus)
19400/9800 0.193 0.000 1.086 0.000 Page.py:123(get_rev)
6600 0.118 0.000 1.065 0.000 Page.py:667(link_to)
11600 0.064 0.000 1.016 0.000 Page.py:179(getPageBasePath)
8900 0.043 0.000 0.968 0.000 Page.py:432(exists)
100 0.017 0.000 0.657 0.007 wikiutil.py:977(send_title)
9800 0.527 0.000 0.541 0.000 Page.py:90(get_current_from_pagedir)
100 0.005 0.000 0.388 0.004 modern.py:18(header)
1300 0.045 0.000 0.292 0.000 wikiutil.py:434(getSysPage)
9800 0.169 0.000 0.277 0.000 Page.py:106(get_rev_dir)
600 0.010 0.000 0.254 0.000 security.py:52(<lambda>)
200 0.006 0.000 0.247 0.001 __init__.py:917(editbar)
5400 0.027 0.000 0.225 0.000 Page.py:26(__init__)
5400 0.091 0.000 0.198 0.000 Page.py:63(reset)
6900 0.102 0.000 0.167 0.000 wikiutil.py:840(link_tag)
1200 0.004 0.000 0.156 0.000 Page.py:299(_text_filename)
200 0.003 0.000 0.141 0.001 __init__.py:757(shouldShowEditbar)
6600 0.043 0.000 0.138 0.000 Page.py:275(getPagePath)
600 0.007 0.000 0.135 0.000 Page.py:1374(getACL)
16600 0.079 0.000 0.125 0.000 request.py:1522(write)
100 0.003 0.000 0.108 0.001 __init__.py:280(navibar)
100 0.001 0.000 0.101 0.001 wikiutil.py:1206(send_footer)
100 0.003 0.000 0.098 0.001 modern.py:51(footer)
11500 0.098 0.000 0.098 0.000 posixpath.py:168(exists)
400 0.005 0.000 0.097 0.000 __init__.py:203(splitNavilink)
600 0.003 0.000 0.083 0.000 wikiacl.py:185(may)
700 0.005 0.000 0.080 0.000 request.py:140(__getattr__)
900 0.004 0.000 0.078 0.000 base.py:226(macro)
100 0.001 0.000 0.075 0.001 request.py:1530(finish)
900 0.009 0.000 0.074 0.000 wikimacro.py:98(execute)
100 0.004 0.000 0.074 0.001 request.py:550(initdicts)
100 0.073 0.001 0.073 0.001 request.py:1050(finish)
100 0.057 0.001 0.070 0.001 wikidicts.py:300(scandicts)
100 0.004 0.000 0.062 0.001 __init__.py:517(pageinfo)
100 0.005 0.000 0.059 0.001 __init__.py:800(actionsMenu)
patch-538 + page refactoring
See NirSoffer
Requests per second: 20.30 [#/sec] (mean)
252272 function calls in 1.516 CPU seconds
Ordered by: cumulative time, internal time, call count
List reduced from 247 to 40 due to restriction <40>
ncalls tottime percall cumtime percall filename:lineno(function)
100 0.019 0.000 1.467 0.015 request.py:674(run)
100 0.041 0.000 1.349 0.013 Page.py:944(send_page)
100 0.014 0.000 0.840 0.008 Page.py:1276(send_page_content)
100 0.096 0.001 0.797 0.008 WhyWikiWorks:2(?)
6000 0.053 0.000 0.472 0.000 text_html.py:212(pagelink)
6600 0.093 0.000 0.470 0.000 Page.py:844(link_to)
100 0.012 0.000 0.335 0.003 wikiutil.py:978(send_title)
100 0.005 0.000 0.259 0.003 modern.py:18(header)
8500 0.019 0.000 0.220 0.000 Page.py:482(exists)
10100 0.022 0.000 0.202 0.000 Page.py:147(getInfo)
5200 0.067 0.000 0.166 0.000 Page.py:121(_getInfoFromDomain)
6900 0.100 0.000 0.161 0.000 wikiutil.py:841(link_tag)
200 0.005 0.000 0.144 0.001 __init__.py:925(editbar)
16700 0.080 0.000 0.125 0.000 request.py:1526(write)
300 0.005 0.000 0.114 0.000 Page.py:580(userMay)
200 0.001 0.000 0.108 0.001 __init__.py:761(shouldShowEditbar)
700 0.006 0.000 0.106 0.000 request.py:146(__getattr__)
300 0.002 0.000 0.106 0.000 wikiacl.py:185(may)
100 0.004 0.000 0.101 0.001 request.py:554(initdicts)
100 0.084 0.001 0.097 0.001 wikidicts.py:300(scandicts)
900 0.004 0.000 0.078 0.000 base.py:226(macro)
100 0.002 0.000 0.078 0.001 request.py:1534(finish)
100 0.075 0.001 0.075 0.001 request.py:1054(finish)
6700 0.074 0.000 0.074 0.000 posixpath.py:168(exists)
900 0.009 0.000 0.074 0.000 wikimacro.py:98(execute)
100 0.004 0.000 0.074 0.001 __init__.py:280(navibar)
400 0.004 0.000 0.063 0.000 __init__.py:203(splitNavilink)
100 0.009 0.000 0.048 0.000 request.py:1417(__init__)
6200 0.029 0.000 0.046 0.000 text_html.py:256(url)
200 0.004 0.000 0.045 0.000 Page.py:401(lastEditInfo)
1100 0.014 0.000 0.044 0.000 wikiutil.py:539(importPlugin)
1300 0.028 0.000 0.044 0.000 wikiutil.py:436(getSysPage)
17000 0.033 0.000 0.042 0.000 socket.py:248(write)
100 0.001 0.000 0.039 0.000 wikiutil.py:1207(send_footer)
4700 0.030 0.000 0.038 0.000 Page.py:32(__init__)
100 0.003 0.000 0.036 0.000 modern.py:51(footer)
100 0.006 0.000 0.036 0.000 request.py:64(__init__)
200 0.006 0.000 0.035 0.000 Page.py:357(_last_edited)
100 0.003 0.000 0.032 0.000 __init__.py:517(pageinfo)
100 0.009 0.000 0.027 0.000 Page.py:769(get_raw_body)