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)