Perf Data Comparisons
We run Chandler performance tests using artificial test data sets. The main data is a 3000 event ical file we load for the so called "large data" sets. For scrolling test we also load two small ical files (under 10 items total) and for sharing test we use an ical file which has about 10 items. For some time there has been questions about how accurately this test data set matches real world performance with real world data sets.
I finally did a comparison using Katie real world data on Linux. Katie subscribes to the office calendar, and has a home, work and book club calendar. When restoring the settings Chandler asks if timezones should be turned on - I answered yes.
I also compared with Ted's data. Ted had work and office calendar, and I also turned on timezones during restore.
When we run the traditional large data tests the repository starts with 8840 items in the repository. Katie's repository contains 5377 items (at the time I run this test). Ted's repository contains 6286 items.
Below is the comparisons of the results. Some notes: sharing test was disabled with katie's and ted's data to prevent data corruption; table scrolling test failed with katie's and ted's data (not enough items); switch to all view, jump week, overlay and switch calendar measured only the 2nd time of the action.
The cases which give the most concern are those that show negative difference of more than 10%. This means the real world case is significantly slower than what one would expect from our test results.
There are some caveats: the test results could change significantly based on what collections we are using for the tests, as well as how much data is visible on the week that tests are performed. The tests jump to a fixed date to get consistent results, but in the real world your performance will vary.
test | 3k 1st | 3k 2nd | katie 1st | katie 2nd | ted 1st | ted 2nd | katie diff 1st | % | katie diff 2nd | % | ted diff 1st | % | ted diff 2nd | % | |
PerfImportCalendar.py | 60.6 | 60.43 | | | | | | | | | | | | | |
PerfStampEvent.py | 0.31 | 0.32 | | | | | | | | | | | | | |
PerfNewEventCalView.py | 0.34 | 0.28 | | | | | | | | | | | | | |
PerfNewCalendar.py | 0.17 | 0.17 | | | | | | | | | | | | | |
PerfSwitchToAllView.py | 0.25 | 0.25 | | | | | | | | | | | | | |
PerfNewEventFileMenu.py | 0.31 | 0.32 | | | | | | | | | | | | | |
PerfLargeDataResize.py | 3.23 | 2.91 | 1.65 | 1.71 | 1.62 | 1.7 | 1.58 | 48.94% | 1.2 | 41.15% | 1.62 | 50.00% | 1.21 | 41.74% | |
PerfLargeDataSwitchCalendar.py | 0.47 | 0.47 | 0.55 | 0.55 | 0.37 | 0.32 | -0.08 | -17.63% | -0.08 | -17.18% | 0.1 | 21.72% | 0.15 | 32.68% | |
PerfLargeDataNewEventCalView.py | 0.59 | 0.65 | 0.66 | 0.65 | 0.35 | 0.4 | -0.07 | -11.39% | 0 | -0.14% | 0.24 | 40.25% | 0.25 | 38.68% | |
PerfLargeDataScrollCalendar.py | 0.64 | 0.62 | 0.34 | 0.34 | 0.33 | 0.33 | 0.3 | 47.53% | 0.28 | 44.83% | 0.31 | 48.75% | 0.29 | 47.18% | |
PerfLargeDataSwitchToAllView.py | 0.66 | 0.66 | 1.4 | 1.36 | 0.8 | 0.81 | -0.74 | -113.00% | -0.7 | -107.04% | -0.14 | -21.10% | -0.15 | -23.25% | |
PerfLargeDataSharing.py | 2.89 | 2.85 | | | | | | | | | | | | | |
PerfLargeDataJumpWeek.py | 0.21 | 0.22 | 0.22 | 0.21 | 0.18 | 0.18 | -0.01 | -2.62% | 0.01 | 6.05% | 0.03 | 13.67% | 0.04 | 17.26% | |
PerfLargeDataScrollTable.py | 0.31 | 0.29 | | | | | | | | | | | | | |
PerfLargeDataNewCalendar.py | 0.72 | 0.74 | 0.96 | 0.89 | 0.61 | 0.53 | -0.24 | -33.07% | -0.15 | -21.00% | 0.11 | 15.89% | 0.2 | 27.61% | |
PerfLargeDataOverlayCalendar.py | 0.34 | 0.34 | 0.28 | 0.27 | 0.29 | 0.29 | 0.06 | 17.70% | 0.06 | 18.65% | 0.05 | 14.26% | 0.05 | 14.01% | |
PerfLargeDataNewEventFileMenu.py | 0.55 | 0.49 | 0.75 | 0.76 | 0.46 | 0.26 | -0.2 | -35.36% | -0.26 | -53.61% | 0.1 | 17.23% | 0.24 | 48.07% | |
PerfLargeDataStampEvent.py | 0.66 | 0.52 | 0.85 | 0.84 | 0.52 | 0.51 | -0.19 | -28.14% | -0.32 | -62.65% | 0.14 | 21.47% | 0.01 | 2.43% | |
Timing empty | 4.05 | 4.08 | | | | | | | | | | | | | |
Timing large startup | 4.52 | 4.46 | 4.86 | 4.85 | 5.43 | 5.56 | -0.34 | -7.52% | -0.39 | -8.74% | -0.91 | -20.13% | -1.1 | -24.66% | |
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
How to run the tests yourself
- svn up -r 13291
- You could try some other revision as well, but this is what I tested
- make distclean install purge
- Shut down all processes you can. You should have just a terminal window open.
- ./tools/do_tests.sh -p
- We are interested in the top section of the output only, i.e. something like:
PerfImport.py [ 60.0s ]
...
Timing startup with large repository 4.62 4.85 4.76 [4.76s]
Showing performance log in 5 seconds, Ctrl+C to stop tests
-
- You can hit Ctrl+c at that point. Run the test again. You now have your baseline numbers.
- patch -p4 < katie.diff
- Now you need to edit tools/do_tests.sh: find "katie_profile" and change it to something like "yourname_profile".
- Then you need to edit tools/QATestScripts/Performance/PerfLargeData*.py files: change "Home" and "Office_Calendar" to some collection names in your sidebar - the tests assume that "Office_Calendar" has many events (I will later refer to "Home" but use the name of your collection).
- Make sure PerfLargeDataSharing?.py does not exist - if it does, delete it.
- ./chandler --profileDir="yourname_profile"
- Test > Restore settings...
- Select the "Home" collection in the sidebar
- File > Save Changes
- File > Backup... into "yourname_profile" directory, quit Chandler
- ./tools/do_tests.sh -p
- Like above, you can hit Ctrl+c at the point. Run the test again. You now have your comparison numbers (some irrelevant tests were now omitted compared to the unedited do_tests.sh).
- ./release/RunPython tools/headless.py --restore="yourname_profile/__repository__.001" --profileDir="yourname_profile"
- view.check()
- len(view)
- this tells you how many items are in youe repository
- Send email to heikki with your results. Include your platform, svn revision number, both baseline numbers, both results numbers, mention how many collections you have in the sidebar, how many items in your repo, and whether or not you have timezones enabled.
--
HeikkiToivonen - 27 Feb 2007