You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@couchdb.apache.org by "Paul Joseph Davis (JIRA)" <ji...@apache.org> on 2016/12/07 17:12:58 UTC

[jira] [Resolved] (COUCHDB-3251) Remove hot loop usage of filename:rootname/1

     [ https://issues.apache.org/jira/browse/COUCHDB-3251?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paul Joseph Davis resolved COUCHDB-3251.
----------------------------------------
    Resolution: Fixed

Merged.

> 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)