Paul Joseph Davis created COUCHDB-3251:
------------------------------------------
Summary: Remove hot loop usage of filename:rootname/1
Key: COUCHDB-3251
URL: https://issues.apache.org/jira/browse/COUCHDB-3251
Project: CouchDB
Issue Type: Improvement
Components: Database Core
Reporter: Paul Joseph Davis
We added a call to filename:rootname/1 that removes the ".couch" extension when
it exists. We've been doing some profiling of CouchDB 2.0 recently and found
this to be a fairly expensive call. It and related calls are in the top few
most expensive functions according to eprof (this is VM wide, so not just
cherry picking couch_server where its actually even worse).
{code}
lists:zip/2
157491702 1.35 77463688 [ 0.49]
erlang:setelement/3
139509262 1.48 85212600 [ 0.61]
erlang:term_to_binary/2
14724676 1.52 87419458 [ 5.94]
erlang:phash/2
30943420 1.54 88195214 [ 2.85]
erlang:send/3
13487486 2.06 118261137 [ 8.77]
filename:rootname/4
514574672 2.59 148907072 [ 0.29]
ets:lookup/2
32852756 2.66 152952875 [ 4.66]
erts_internal:port_command/3
10448091 2.95 169649699 [ 16.24]
ioq_server:matching_request/4
906453003 3.19 183041235 [ 0.20]
ioq_server:split/4
535820540 3.31 189913578 [ 0.35]
snappy:compress/1
7950803 3.42 196220575 [ 24.68]
filename:do_flatten/2
516517594 4.21 241562020 [ 0.47]
gen_server:try_handle_call/4
9529789 5.66 324927694 [ 34.10]
gen_server:loop/6
16844687 7.41 425628355 [ 25.27]
{code}
There's an obvious easy way to optimize this by using binary matching so simple
PR is incoming.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)