Searching titles is the most common search, and a major way of navigating a wiki. It is also a very fast search (if done right)

All tests run a search for "help config" without the quotes, which mean the title is search twice, once for help and once for config.

patch 467

ab -n 11 -c 1 'http://localhost:8000/HelpOnConfiguration/EmailSupport?action=fullsearch&context=180&value=help+config&titlesearch=Titles'

Requests per second:    1.31 [#/sec] (mean)

         304382 function calls (284462 primitive calls) in 12.368 CPU seconds

   Ordered by: internal time, call count
   List reduced from 227 to 20 due to restriction <20>

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    33270    2.796    0.000    2.796    0.000 posixpath.py:171(exists)
26620/13700    2.162    0.000    6.119    0.000 Page.py:78(get_rev)
     6580    1.288    0.000    2.450    0.000 wikiacl.py:185(may)
     6460    1.156    0.000    1.166    0.000 search.py:121(sortByCost)
     6600    1.115    0.000    1.115    0.000 posixpath.py:144(getmtime)
       10    1.006    0.101    1.006    0.101 caching.py:92(content)
    88080    0.614    0.000    0.614    0.000 posixpath.py:56(join)
    14020    0.388    0.000    0.388    0.000 wikiutil.py:154(quoteWikinameFS)
     6540    0.354    0.000    0.425    0.000 wikiutil.py:187(unquoteWikiname)
14020/7020    0.311    0.000    4.629    0.001 Page.py:120(getPagePath)
       20    0.205    0.010   10.652    0.533 Page.py:1316(listPages)
     6580    0.130    0.000    6.529    0.001 Page.py:1266(getACL)
     6580    0.110    0.000    9.154    0.001 security.py:52(<lambda>)
    13320    0.106    0.000    0.106    0.000 Page.py:28(__init__)
     6580    0.072    0.000    0.072    0.000 wikiutil.py:56(decodeUserInput)
     5280    0.065    0.000    0.078    0.000 wikidicts.py:271(has_member)
     6580    0.060    0.000    0.060    0.000 security.py:45(__getattr__)
     6972    0.057    0.000    0.058    0.000 search.py:272(search)
     6610    0.055    0.000    5.198    0.001 Page.py:199(_text_filename)
       10    0.048    0.005    1.056    0.106 wikidicts.py:300(scandicts)


   Ordered by: internal time, call count
   List reduced from 227 to 20 due to restriction <20>

Function                          was called by...
posixpath.py:171(exists)           Page.py:78(get_rev)(26620)    6.119
                                   Page.py:120(getPagePath)(20)    4.629
                                   Page.py:332(exists)(50)    0.178
                                   Page.py:1266(getACL)(6580)    6.529
Page.py:78(get_rev)                Page.py:120(getPagePath)(12960)    4.629
                                   Page.py:199(_text_filename)(6610)    5.198
                                   Page.py:332(exists)(320)    0.178
                                   Page.py:1316(listPages)(6730)   10.652
wikiacl.py:185(may)                security.py:52(<lambda>)(6580)    9.154
search.py:121(sortByCost)          search.py:126(search)(6460)    1.257
posixpath.py:144(getmtime)         Page.py:272(lastEditInfo)(10)    0.016
                                   Page.py:1266(getACL)(6580)    6.529
                                   logfile.py:160(date)(10)    0.000
caching.py:92(content)             wikidicts.py:300(scandicts)(10)    1.056
posixpath.py:56(join)              Page.py:78(get_rev)(53240)    6.119
                                   Page.py:120(getPagePath)(28040)    4.629
                                   Page.py:427(getPageList)(10)   10.655
                                   Page.py:1316(listPages)(6730)   10.652
                                   caching.py:13(__init__)(10)    0.001
                                   caching.py:34(_filename)(10)    0.000
                                   wikiaction.py:836(getPlugins)(40)    0.006
wikiutil.py:154(quoteWikinameFS)   Page.py:120(getPagePath)(14020)    4.629
wikiutil.py:187(unquoteWikiname)   Page.py:1316(listPages)(6540)   10.652
Page.py:120(getPagePath)           AttachFile.py:50(getAttachDir)(10)    0.005
                                   Page.py:78(get_rev)(6930)    6.119
                                   Page.py:120(getPagePath)(7000)    4.629
                                   Page.py:228(_last_edited)(10)    0.005
                                   Page.py:332(exists)(50)    0.178
                                   Page.py:427(getPageList)(10)   10.655
                                   editlog.py:74(__init__)(10)    0.001
Page.py:1316(listPages)            Page.py:427(getPageList)(20)   10.655
Page.py:1266(getACL)               security.py:52(<lambda>)(6580)    9.154
security.py:52(<lambda>)           Page.py:1316(listPages)(6530)   10.652
                                   __init__.py:488(shouldShowPageinfo)(10)    0.013
                                   __init__.py:750(shouldShowEditbar)(20)    0.017
                                   __init__.py:910(editbar)(10)    0.062
                                   request.py:366(getAvailableActions)(10)    0.017
Page.py:28(__init__)               AttachFile.py:50(getAttachDir)(10)    0.005
                                   Page.py:1252(getParentPage)(20)    0.010
                                   request.py:670(run)(10)   12.368
                                   search.py:945(searchPages)(6460)   11.988
                                   security.py:52(<lambda>)(6580)    9.154
                                   text_html.py:212(pagelink)(80)    0.056
                                   wikiutil.py:432(getSysPage)(150)    0.080
                                   wikiutil.py:909(send_title)(10)    0.232
wikiutil.py:56(decodeUserInput)    request.py:582(_setup_args_from_cgi_form)(40)    0.001
                                   wikiutil.py:187(unquoteWikiname)(6540)    0.425
wikidicts.py:271(has_member)       wikiacl.py:185(may)(5280)    2.450
security.py:45(__getattr__)        Page.py:1316(listPages)(6530)   10.652
                                   __init__.py:488(shouldShowPageinfo)(10)    0.013
                                   __init__.py:750(shouldShowEditbar)(20)    0.017
                                   __init__.py:910(editbar)(10)    0.062
                                   request.py:366(getAvailableActions)(10)    0.017
search.py:272(search)              search.py:126(search)(6972)    1.257
Page.py:199(_text_filename)        Page.py:272(lastEditInfo)(10)    0.016
                                   Page.py:299(isWritable)(10)    0.005
                                   Page.py:370(size)(10)    0.006
                                   Page.py:1266(getACL)(6580)    6.529
wikidicts.py:300(scandicts)        request.py:556(initdicts)(10)    1.057

patch 460 + experinamtal refactoring

See PageClassRefactoring

ab -n 11 -c 1 'http://localhost:8000/HelpOnConfiguration/EmailSupport?action=fullsearch&context=180&value=help+config&titlesearch=Titles'

Requests per second:    2.05 [#/sec] (mean)

         233562 function calls in 8.219 CPU seconds

   Ordered by: internal time, call count
   List reduced from 262 to 20 due to restriction <20>

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    25730    1.234    0.000    1.234    0.000 posixpath.py:56(join)
       20    1.203    0.060    7.727    0.386 Page.py:1337(listPages)
    20110    1.092    0.000    1.151    0.000 Page.py:24(Page)
     6650    1.052    0.000    1.765    0.000 security.py:52(<lambda>)
    12360    0.772    0.000    3.032    0.000 Page.py:185(getInfoForDomain)
    18970    0.682    0.000    0.682    0.000 posixpath.py:171(exists)
     6730    0.371    0.000    0.443    0.000 wikiutil.py:187(unquoteWikiname)
     6600    0.303    0.000    0.303    0.000 wikiutil.py:154(quoteWikinameFS)
     6650    0.279    0.000    0.442    0.000 wikiacl.py:185(may)
     6460    0.156    0.000    0.167    0.000 search.py:121(sortByCost)
     6670    0.137    0.000    0.137    0.000 posixpath.py:144(getmtime)
     6650    0.102    0.000    0.249    0.000 Page.py:1287(getACL)
    13810    0.086    0.000    3.118    0.000 Page.py:169(getInfo)
     6770    0.072    0.000    0.072    0.000 wikiutil.py:56(decodeUserInput)
     6650    0.065    0.000    0.065    0.000 security.py:45(__getattr__)
     5300    0.061    0.000    0.076    0.000 wikidicts.py:271(has_member)
     6610    0.059    0.000    0.059    0.000 Page.py:37(__init__)
     6972    0.058    0.000    0.059    0.000 search.py:272(search)
       10    0.049    0.005    0.056    0.006 wikidicts.py:300(scandicts)
     7060    0.045    0.000    3.152    0.000 Page.py:345(exists)


   Ordered by: internal time, call count
   List reduced from 262 to 20 due to restriction <20>

Function                          was called by...
posixpath.py:56(join)              Page.py:185(getInfoForDomain)(25590)    3.032
                                   Page.py:435(getPageList)(10)    7.730
                                   Page.py:530(getEditLogPath)(20)    0.000
                                   Page.py:536(getAttachmentPath)(10)    0.000
                                   Page.py:542(getPagesPath)(10)    0.000
                                   caching.py:13(__init__)(10)    0.001
                                   caching.py:34(_filename)(10)    0.000
                                   multiconfig.py:267(__init__)(30)    0.004
                                   wikiaction.py:836(getPlugins)(40)    0.006
Page.py:1337(listPages)            Page.py:435(getPageList)(20)    7.730
Page.py:24(Page)                   AttachFile.py:50(getAttachDir)(10)    0.000
                                   Page.py:1273(getParentPage)(20)    0.001
                                   Page.py:1337(listPages)(6710)    7.727
                                   request.py:64(__init__)(10)    0.022
                                   request.py:669(run)(10)    8.194
                                   search.py:945(searchPages)(6460)    8.022
                                   security.py:52(<lambda>)(6650)    1.765
                                   text_html.py:212(pagelink)(80)    0.010
                                   wikiutil.py:432(getSysPage)(150)    0.012
                                   wikiutil.py:909(send_title)(10)    0.063
security.py:52(<lambda>)           Page.py:1337(listPages)(6600)    7.727
                                   __init__.py:490(shouldShowPageinfo)(10)    0.002
                                   __init__.py:752(shouldShowEditbar)(20)    0.003
                                   __init__.py:912(editbar)(10)    0.018
                                   request.py:365(getAvailableActions)(10)    0.007
Page.py:185(getInfoForDomain)      Page.py:169(getInfo)(12360)    3.118
posixpath.py:171(exists)           Page.py:185(getInfoForDomain)(18960)    3.032
                                   Page.py:242(_last_edited)(10)    0.001
wikiutil.py:187(unquoteWikiname)   Page.py:1337(listPages)(6730)    7.727
wikiutil.py:154(quoteWikinameFS)   Page.py:105(getStorageName)(6600)    0.346
wikiacl.py:185(may)                security.py:52(<lambda>)(6650)    1.765
search.py:121(sortByCost)          search.py:126(search)(6460)    0.258
posixpath.py:144(getmtime)         Page.py:289(lastEditInfo)(10)    0.002
                                   Page.py:1287(getACL)(6650)    0.249
                                   logfile.py:160(date)(10)    0.000
Page.py:1287(getACL)               security.py:52(<lambda>)(6650)    1.765
Page.py:169(getInfo)               Page.py:217(_text_filename)(20)    0.000
                                   Page.py:316(isWritable)(10)    0.000
                                   Page.py:329(isUnderlayPage)(10)    0.000
                                   Page.py:337(isStandardPage)(10)    0.000
                                   Page.py:345(exists)(7060)    3.152
                                   Page.py:375(size)(10)    0.001
                                   Page.py:530(getEditLogPath)(20)    0.000
                                   Page.py:536(getAttachmentPath)(10)    0.000
                                   Page.py:542(getPagesPath)(10)    0.000
                                   Page.py:1287(getACL)(6650)    0.249
wikiutil.py:56(decodeUserInput)    request.py:581(_setup_args_from_cgi_form)(40)    0.001
                                   wikiutil.py:187(unquoteWikiname)(6730)    0.443
security.py:45(__getattr__)        Page.py:1337(listPages)(6600)    7.727
                                   __init__.py:490(shouldShowPageinfo)(10)    0.002
                                   __init__.py:752(shouldShowEditbar)(20)    0.003
                                   __init__.py:912(editbar)(10)    0.018
                                   request.py:365(getAvailableActions)(10)    0.007
wikidicts.py:271(has_member)       wikiacl.py:185(may)(5300)    0.442
Page.py:37(__init__)               Page.py:24(Page)(6610)    1.151
search.py:272(search)              search.py:126(search)(6972)    0.258
wikidicts.py:300(scandicts)        request.py:555(initdicts)(10)    0.057
Page.py:345(exists)                Page.py:289(lastEditInfo)(10)    0.002
                                   Page.py:590(link_to)(150)    0.014
                                   Page.py:1273(getParentPage)(20)    0.001
                                   Page.py:1337(listPages)(6710)    7.727
                                   __init__.py:490(shouldShowPageinfo)(10)    0.002
                                   __init__.py:752(shouldShowEditbar)(20)    0.003
                                   request.py:365(getAvailableActions)(10)    0.007
                                   wikiutil.py:432(getSysPage)(130)    0.012

patch-468

ab -n 11 -c 1 'http://localhost:8000/HelpOnConfiguration/EmailSupport?action=fullsearch&context=180&value=help+config&titlesearch=Titles'

Requests per second:    1.33 [#/sec] (mean)

         372660 function calls (359950 primitive calls) in 13.759 CPU seconds

   Ordered by: internal time, call count
   List reduced from 232 to 20 due to restriction <20>

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    19460    3.588    0.000    3.729    0.000 Page.py:89(get_current_from_pagedir)
    19460    1.326    0.000    2.683    0.000 Page.py:105(get_rev_dir)
    20240    1.171    0.000    6.525    0.000 Page.py:241(getPageStatus)
     6460    1.164    0.000    1.175    0.000 search.py:121(sortByCost)
     6580    1.114    0.000    7.926    0.001 security.py:52(<lambda>)
    13420    1.087    0.000    2.374    0.000 Page.py:272(getPagePath)
    26110    0.712    0.000    0.712    0.000 posixpath.py:171(exists)
    79270    0.597    0.000    0.597    0.000 posixpath.py:56(join)
    13320    0.532    0.000    0.532    0.000 wikiutil.py:154(quoteWikinameFS)
     6540    0.371    0.000    0.447    0.000 wikiutil.py:187(unquoteWikiname)
     6580    0.294    0.000    0.459    0.000 wikiacl.py:185(may)
19660/6950    0.237    0.000    5.294    0.001 Page.py:122(get_rev)
    13320    0.209    0.000    3.220    0.000 Page.py:62(reset)
       20    0.204    0.010    9.563    0.478 Page.py:1418(listPages)
    13320    0.138    0.000    3.358    0.000 Page.py:26(__init__)
    20240    0.128    0.000    5.238    0.000 Page.py:176(getPageBasePath)
     6580    0.122    0.000    5.600    0.001 Page.py:1368(getACL)
     6600    0.115    0.000    0.115    0.000 posixpath.py:144(getmtime)
     6580    0.077    0.000    0.077    0.000 wikiutil.py:56(decodeUserInput)
     5280    0.067    0.000    0.078    0.000 wikidicts.py:271(has_member)


   Ordered by: internal time, call count
   List reduced from 232 to 20 due to restriction <20>

Function                              was called by...
Page.py:89(get_current_from_pagedir)   Page.py:105(get_rev_dir)(6730)    2.683
                                       Page.py:122(get_rev)(12730)    5.294
Page.py:105(get_rev_dir)               Page.py:122(get_rev)(12730)    5.294
                                       Page.py:1418(listPages)(6730)    9.563
Page.py:241(getPageStatus)             Page.py:122(get_rev)(6820)    5.294
                                       Page.py:272(getPagePath)(13420)    2.374
search.py:121(sortByCost)              search.py:126(search)(6460)    1.269
security.py:52(<lambda>)               Page.py:1418(listPages)(6530)    9.563
                                       __init__.py:488(shouldShowPageinfo)(10)    0.007
                                       __init__.py:750(shouldShowEditbar)(20)    0.014
                                       __init__.py:910(editbar)(10)    0.046
                                       request.py:366(getAvailableActions)(10)    0.014
Page.py:272(getPagePath)               AttachFile.py:50(getAttachDir)(10)    0.006
                                       Page.py:62(reset)(13320)    3.220
                                       Page.py:325(_last_edited)(10)    0.002
                                       Page.py:429(exists)(50)    0.088
                                       Page.py:530(getPageList)(20)    9.566
                                       editlog.py:74(__init__)(10)    0.001
posixpath.py:171(exists)               Page.py:105(get_rev_dir)(19460)    2.683
                                       Page.py:241(getPageStatus)(20)    6.525
                                       Page.py:429(exists)(50)    0.088
                                       Page.py:1368(getACL)(6580)    5.600
posixpath.py:56(join)                  Page.py:62(reset)(13320)    3.220
                                       Page.py:89(get_current_from_pagedir)(19460)    3.729
                                       Page.py:105(get_rev_dir)(19460)    2.683
                                       Page.py:241(getPageStatus)(20240)    6.525
                                       Page.py:1418(listPages)(6730)    9.563
                                       caching.py:13(__init__)(10)    0.001
                                       caching.py:34(_filename)(10)    0.000
                                       wikiaction.py:836(getPlugins)(40)    0.006
wikiutil.py:154(quoteWikinameFS)       Page.py:62(reset)(13320)    3.220
wikiutil.py:187(unquoteWikiname)       Page.py:1418(listPages)(6540)    9.563
wikiacl.py:185(may)                    security.py:52(<lambda>)(6580)    7.926
Page.py:122(get_rev)                   Page.py:176(getPageBasePath)(12730)    5.238
                                       Page.py:296(_text_filename)(6610)    5.257
                                       Page.py:429(exists)(320)    0.088
Page.py:62(reset)                      Page.py:26(__init__)(13320)    3.358
Page.py:1418(listPages)                Page.py:530(getPageList)(20)    9.566
Page.py:26(__init__)                   AttachFile.py:50(getAttachDir)(10)    0.006
                                       Page.py:1354(getParentPage)(20)    0.009
                                       request.py:670(run)(10)   13.759
                                       search.py:945(searchPages)(6460)   13.454
                                       security.py:52(<lambda>)(6580)    7.926
                                       text_html.py:212(pagelink)(80)    0.052
                                       wikiutil.py:432(getSysPage)(150)    0.076
                                       wikiutil.py:909(send_title)(10)    0.169
Page.py:176(getPageBasePath)           Page.py:241(getPageStatus)(20240)    6.525
Page.py:1368(getACL)                   security.py:52(<lambda>)(6580)    7.926
posixpath.py:144(getmtime)             Page.py:369(lastEditInfo)(10)    0.003
                                       Page.py:1368(getACL)(6580)    5.600
                                       logfile.py:160(date)(10)    0.000
wikiutil.py:56(decodeUserInput)        request.py:582(_setup_args_from_cgi_form)(40)    0.001
                                       wikiutil.py:187(unquoteWikiname)(6540)    0.447
wikidicts.py:271(has_member)           wikiacl.py:185(may)(5280)    0.459

MoinMoin: MoinProfiling/SearchTitles (last edited 2007-10-29 19:19:11 by localhost)