WordPress starter theme framework performance

Posted by .

Part of the reason I’m creating this site right now is to try out a few starter themes that make use of frameworks such as Twitter Bootstrap and Foundation. I’ve used LESS before on a free site I created recently and I would like to explore CSS preprocessors a little further. Both of the above frameworks I mentioned use a CSS preprocessor which is why I’ve chosen these possible themes:

WordPress-Bootstrap - Described as a WordPress theme based on Twitter bootstrap. Looking at the codebase it’s also heavily based on bones, minus the LESS stuff.
WP-Foundation - A WordPress starter theme built on the Foundation 3 framework although it seems to be missing the main SASS files. This one also seems to rely on the bones codebase.
Bones - A starter theme with options to use SASS or LESS.

I’m currently using Bones simply because I can use LESS with it pretty much out of the box, it’s a nice fresh base to start on and the other themes seem to be based on bones anyway.

Performance tests

I have compared the homepage load times of the above themes and the default Twenty Eleven Theme (with 5 dummy posts with images etc) using the apache a/b benchmarking tool. I ran the test 3 times for each theme and picked the best performing run which I have included below.

I also noted down the page load data (an average based on 3 runs) from the Chrome Inspector network panel which I have included for each theme just above the a/b test results.

It’s pretty much of a muchness, none of the themes seem to add extra overhead compared to the default Twenty Eleven Theme despite having a number of extra PHP include files.

Twenty eleven theme

Requests: 16
Transferred:  712.87KB
DOMContentLoaded:  646 ms
OnLoad: 2.28 s

Apache a/b test

Document Length: 25648 bytes

Concurrency Level: 10
Time taken for tests: 4.037 seconds
Complete requests: 50
Failed requests: 33
(Connect: 0, Receive: 0, Length: 33, Exceptions: 0)
Write errors: 0
Total transferred: 1295050 bytes
HTML transferred: 1282500 bytes
Requests per second: 12.39 [#/sec] (mean)
Time per request: 807.339 [ms] (mean)
Time per request: 80.734 [ms] (mean, across all concurrent requests)
Transfer rate: 313.30 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.5 0 1
Processing: 579 779 92.8 770 1043
Waiting: 405 579 92.5 580 814
Total: 579 779 93.0 770 1045

Percentage of the requests served within a certain time (ms)
50% 770
66% 785
75% 828
80% 862
90% 920
95% 956
98% 1045
99% 1045
100% 1045 (longest request)

 

WP-bootstrap

 

Requests: 19
Transferred:  676.85KB
DOMContentLoaded:  676 ms
OnLoad: 2.45 s

Apache a/b test

Document Length: 24260 bytes

Concurrency Level: 10
Time taken for tests: 3.443 seconds
Complete requests: 50
Failed requests: 0
Write errors: 0
Total transferred: 1225550 bytes
HTML transferred: 1213000 bytes
Requests per second: 14.52 [#/sec] (mean)
Time per request: 688.502 [ms] (mean)
Time per request: 68.850 [ms] (mean, across all concurrent requests)
Transfer rate: 347.66 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 1
Processing: 445 663 109.1 661 972
Waiting: 314 491 87.2 479 710
Total: 445 663 109.2 661 973

Percentage of the requests served within a certain time (ms)
50% 661
66% 695
75% 720
80% 747
90% 800
95% 842
98% 973
99% 973
100% 973 (longest request)

 

WordPress Foundation

 

Requests: 27
Transferred:  713.79KB
DOMContentLoaded:  759 ms
OnLoad: 2.40 s

Apache a/b test

Document Length: 23782 bytes

Concurrency Level: 10
Time taken for tests: 3.733 seconds
Complete requests: 50
Failed requests: 0
Write errors: 0
Total transferred: 1201650 bytes
HTML transferred: 1189100 bytes
Requests per second: 13.39 [#/sec] (mean)
Time per request: 746.618 [ms] (mean)
Time per request: 74.662 [ms] (mean, across all concurrent requests)
Transfer rate: 314.35 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 1
Processing: 479 722 97.3 723 926
Waiting: 324 541 89.8 541 733
Total: 480 722 97.3 723 926

Percentage of the requests served within a certain time (ms)
50% 723
66% 756
75% 769
80% 787
90% 899
95% 915
98% 926
99% 926
100% 926 (longest request)

 

Bones

 

Requests: 15
Transferred:  649.09KB
DOMContentLoaded:  622 ms
OnLoad: 2.19 s

15 requests ❘ 649.09KB transferred ❘ 2.39s (onload: 2.39s, DOMContentLoaded: 675ms)
15 requests ❘ 649.09KB transferred ❘ 1.74s (onload: 1.74s, DOMContentLoaded: 595ms)
15 requests ❘ 649.09KB transferred ❘ 2.44s (onload: 2.44s, DOMContentLoaded: 595ms)

Apache a/b test

Document Length: 21552 bytes

Concurrency Level: 10
Time taken for tests: 3.344 seconds
Complete requests: 50
Failed requests: 0
Write errors: 0
Total transferred: 1090150 bytes
HTML transferred: 1077600 bytes
Requests per second: 14.95 [#/sec] (mean)
Time per request: 668.847 [ms] (mean)
Time per request: 66.885 [ms] (mean, across all concurrent requests)
Transfer rate: 318.34 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 1
Processing: 463 654 79.9 652 867
Waiting: 285 504 68.0 503 660
Total: 464 654 79.9 652 867

Percentage of the requests served within a certain time (ms)
50% 652
66% 691
75% 703
80% 733
90% 761
95% 791
98% 867
99% 867
100% 867 (longest request)

Comments are closed.