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

Reply via email to