[ 
https://issues.apache.org/jira/browse/COUCHDB-797?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12878264#action_12878264
 ] 

Adam Kocoloski commented on COUCHDB-797:
----------------------------------------

Hi Sean, thanks for bringing this up.  I spent a few minutes looking at the 
patch, but I'm having a hard convincing myself that a queue is warranted here.  
Adding a value to the head of a list is cheaper than inserting into a queue, so 
I think the important part of the patch is the reimplementation of rem_values/2.

I can see where the original implementation would be sub-optimal if the Keep 
list is typically large.  I'm not familiar enough with the server state to say 
whether that's the case.  But if it is,  I would maybe try reversing the list 
and flipping the comparator in the predicate function in order to reach the 
split condition sooner.

One other thing the original code did poorly was the case statement

case length(Agg#aggregate.samples) > 0 true -> ...

that should be e.g.

case Agg#aggregate.samples of [ _ | _ ]

Sean, do you have some code to demonstrate the improvement?  I'd be keen to 
compare the queue approach with a few list-based alternatives.

> PATCH: couch_stats_aggregator should use queue instead of list
> --------------------------------------------------------------
>
>                 Key: COUCHDB-797
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-797
>             Project: CouchDB
>          Issue Type: Improvement
>          Components: Database Core
>            Reporter: Sean Bartell
>            Priority: Minor
>         Attachments: 0001-stats-use-queue-instead-of-list-for-speed.patch
>
>
> couch_stats_aggregator uses a list to store samples, but many times per 
> second adds a value to the front or removes one from the end. This patch 
> makes it use a queue instead. Statistics take up little CPU time, but there's 
> a noticeable improvement when CouchDB is idle.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to