Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Faster Sort filter (requires PHP 5.4) #7420

Closed
wants to merge 3 commits into from
Closed

Faster Sort filter (requires PHP 5.4) #7420

wants to merge 3 commits into from

Conversation

tsteur
Copy link
Member

@tsteur tsteur commented Mar 13, 2015

Made sort much faster by using builtin php methods. Currently, we sort via usort in PHP. This is quite slow especially when we sort many rows, eg 25k rows or more. The time needed to sort depends a lot on the data, the column to sort, etc. that's why it is hard to say how much performance improvement we will gain. On 25k rows it can drop from eg before about 900ms to 500ms.

As I side effect I fixed many bugs that were in the previous sort filter implementation, the code is much better tested and it does now use a secondary column on nb_visits or label if possible. refs #7401

Some of the fixed bugs include:

  • We would pick wrong sorting algorithm if label is numeric. This is eg often the case when having labels like '2015' etc.
  • We would pick wrong column to sort if first row of the table has a value false for the selected column.
  • ...

We need to wait till we drop support for PHP 5.3 since the sort flags SORT_NATURAL and SORT_FLAG_CASE were added in PHP 5.4 which this pull request requires.

refs #4768

As I side effect I fixed many bugs that were in the previous
sort filter implementation. The code is better tested now and
it does now use a secondary column on nb_visits or label if possible
see #7401
@tsteur tsteur added this to the Piwik 3.0.0 milestone Mar 13, 2015
@mattab mattab added Enhancement For new feature suggestions that enhance Matomo's capabilities or add a new report, new API etc. Pull Request WIP Indicates the current pull request is still work in progress and not ready yet for a review. labels Mar 17, 2015
@mattab mattab changed the title Faster Sort filter Faster Sort filter (requires PHP 5.4) Mar 17, 2015
@tsteur tsteur added the c: Performance For when we could improve the performance / speed of Matomo. label Mar 19, 2015
@tsteur
Copy link
Member Author

tsteur commented Mar 19, 2015

refs #6759. This will make range dates (#4768), archiving, flattening (#5098) and viewing reports in general faster

@tsteur
Copy link
Member Author

tsteur commented Jul 28, 2015

I will issue a new PR as there is now a branch for Piwik 3.0 which supports PHP 5.4+

@tsteur tsteur closed this Jul 28, 2015
@tsteur tsteur deleted the fast_sort branch July 29, 2015 12:22
@mattab mattab modified the milestones: 3.0.0, 3.0.0-b1 Jul 30, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c: Performance For when we could improve the performance / speed of Matomo. Enhancement For new feature suggestions that enhance Matomo's capabilities or add a new report, new API etc. Pull Request WIP Indicates the current pull request is still work in progress and not ready yet for a review.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants