[
https://issues.apache.org/jira/browse/COUCHDB-3251?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul Joseph Davis closed COUCHDB-3251.
--------------------------------------
> 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)