• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

chop-dbhi / avocado / 687
81%
master: 80%

Build:
Build:
LAST BUILD BRANCH: instance-cache-key
DEFAULT BRANCH: master
Ran 12 Feb 2015 01:53PM UTC
Jobs 4
Files 0
Run time 180min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

pending completion
687

push

travis-ci

bruth
Refactor formatter and exporter APIs to reduce overhead

A call to formatter(...) was doing a lot of work for every row being
processed. The primary slow spots are:

- Format methods being dynamically accessed via getattr() on every loop
- Unpacking keyword arguments (**kwargs) in the method call
- Building and moving OrderedDict values
- Logging a message when a value failed be coerced

To remediate these issues, targeted format methods are now processed
at initialization rather that process time. This requires the list of
formats to be passed into the constructor and not in the __call__ method.

Keyword arguments passed in during a call are no longer unpacked in the
method call, but are passed as a keyword argument itself, `kwargs`.

Use of OrderedDict has been removed altogether. These structures take up
a lot of memory and have proven to add little value during processing.
This required adding a method for getting the header/field data for the
values being processed. This is also a desirable change for addressing

Logging has been addressed by only doing while in DEBUG mode. Since the
exception is skipped, there is no point in logging the errors while in
production.

The exporters have been updated to accommodate this changes. In addition,
new read methods have been implemented for performance testing including
cached and threaded versions. The previous read method have been renamed
to manual_read since it performs manual limit and offsetting and distinct
checking.

To accommodate the new read method, the `write` on all exporters have been
changed to not call `read` itself. This change requires the passed iterable
to already contain the formatted rows.

Note: This refactor requires backwards incompatible changes to get the
performance gains.

Signed-off-by: Byron Ruth <b@devel.io>

218 of 218 new or added lines in 9 files covered. (100.0%)

3186 of 3908 relevant lines covered (81.53%)

3.26 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
1
100.0
avocado/export/_base.py
3
100.0
avocado/export/_sas.py
4
100.0
avocado/export/_r.py
11
100.0
avocado/formatters.py

Uncovered Existing Lines

Lines Coverage ∆ File
1
100.0
avocado/export/_base.py
2
100.0
avocado/export/_csv.py
7
100.0
avocado/export/_sas.py
9
100.0
avocado/formatters.py
10
100.0
avocado/query/pipeline.py
27
100.0
avocado/models.py
Jobs
ID Job ID Ran Files Coverage
1 687.1 (DJANGO=1.5.12 POSTGRES_TEST_USER=postgres POSTGRES_TEST_NAME=avocado MYSQL_TEST_USER=root MYSQL_TEST_NAME=avocado) 12 Feb 2015 01:53PM UTC 0
81.5
Travis Job 687.1
2 687.2 (DJANGO=1.6.10 POSTGRES_TEST_USER=postgres POSTGRES_TEST_NAME=avocado MYSQL_TEST_USER=root MYSQL_TEST_NAME=avocado) 12 Feb 2015 01:53PM UTC 0
81.5
Travis Job 687.2
3 687.3 (DJANGO=1.5.12 POSTGRES_TEST_USER=postgres POSTGRES_TEST_NAME=avocado MYSQL_TEST_USER=root MYSQL_TEST_NAME=avocado) 12 Feb 2015 01:53PM UTC 0
81.35
Travis Job 687.3
4 687.4 (DJANGO=1.6.10 POSTGRES_TEST_USER=postgres POSTGRES_TEST_NAME=avocado MYSQL_TEST_USER=root MYSQL_TEST_NAME=avocado) 12 Feb 2015 03:19PM UTC 0
Travis Job 687.4
Source Files on build 687
Detailed source file information is not available for this build.
  • Back to Repo
  • Travis Build #687
  • c0ec449d on github
  • Prev Build on refactor-export (#686)
  • Next Build on refactor-export (#690)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc