-
Notifications
You must be signed in to change notification settings - Fork 7
/
template.view.php
169 lines (147 loc) · 9.53 KB
/
template.view.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<!doctype html>
<html>
<head>
<title>PHP Performance Metrics</title>
<link rel="stylesheet" href="http://bootstrapdocs.com/v1.4.0/bootstrap.css">
<meta name="google-site-verification" content="25AfGx-XF6ikgholPhv2GQ5sTxLz0gk13Eklidw3bds" />
<style>
table tr td,
table tr th {
/*font-size:85%;*/
}
tr.group th {
font-weight:bold;
background:#eee !important;
color:#000 !important;
}
code {
background-color:inherit;
color:inherit;
padding:0;
font-family:"Inconsolata", "Monaco", "Consolas", "Courier New", Courier, monospace;
font-size:85%;
}
.well iframe {
width:190px !important;
}
.intro p {
font-size:90%;
margin-bottom:5px;
}
</style>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-20517424-7']);
_gaq.push(['_setDomainName', 'phpperf.com']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<a href="<?php echo $this->url ?>"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
<div class=container>
<div class='page-header'>
<div style='margin-top:11px;float:right'>
<a href="https://twitter.com/share" class="twitter-share-button" data-via="makeusabrew">Tweet</a>
</div>
<h1>PHP Performance Metrics</h1>
</div>
<div class=intro>
<p>The table below profiles <a href="http://www.php.net/manual/en/functions.internal.php">built-in PHP method</a>
performance, loosely grouped by type and usage.</p>
<p>Each test comprises of <strong><?php echo number_format($this->meta['iterations']) ?></strong> method calls
averaged over <strong><?php echo $this->meta['repetitions'] ?></strong> repetitions.</p>
<p>The median profile takes <strong><?php echo $this->meta['median'] ?> seconds</strong> to run <?php echo number_format($this->meta['iterations']) ?>
times. This value is used to calculate the relative percentage costs across both the group and suite of profiled functions. The value
for a single method call is derived by dividing the mean value by the number of iterations, so it is approximate.</p>
<p>You can click on any group's heading to view the profile class as a whole, or you can click on each
individual method to be taken to the source code behind each profile – particularly useful
if the profile label is a summary rather than actual code.</p>
<p>All of these tests are compiled using the same machine each time. Inevitably, each
run may vary, but the differences should be slight and the relative performance should be fairly consistent.</p>
<ul>
<li><strong>CPU:</strong> AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ (2.2 GHz)</li>
<li><strong>RAM:</strong> 3Gb</li>
<li><strong>OS:</strong> Ubuntu 11.10 Desktop Edition</li>
<li><strong>PHP:</strong> <?php echo phpversion() ?></li>
</ul>
<p>The <strong>μs</strong> symbol stands for <a href="http://en.wikipedia.org/wiki/Microsecond">microseconds</a>,
equivalent to 0.001 milliseconds. It takes roughly 350,000 of these to blink your eye.</p>
<p><em>This run took <?php echo round($this->meta['duration'], 2) ?> seconds and was generated on <?php echo date("d/m/Y H:i:s") ?></em></p>
</div>
<h2>Results</h2>
<table class="zebra-striped bordered-table">
<thead>
<?php /*
<tr>
<th> </th>
<th>× <?php echo number_format($this->meta['iterations']) ?></th>
<th>1</th>
<th>Relative</th>
</tr>
*/ ?>
</thead>
<tbody>
<?php foreach($this->profiles as $profile): ?>
<tr class=group>
<th><a href='<?php echo $this->url.'tree/master/profiles/'.$profile['filename'] ?>'><?php echo $profile['title'] ?></a></th>
<th>× <?php echo number_format($this->meta['iterations']) ?></th>
<th>× 1</th>
<th>Group</th>
<th>Suite</th>
</tr>
<?php foreach($profile['results'] as $stats): ?>
<tr>
<td><a href='<?php echo $this->url.'tree/master/profiles/'.$profile['filename'] ?>#L<?php echo $stats['startLine'] ?>'><?php echo $this->highlight($stats['label']) ?><?php if (isset($stats['alias'])): ?><span class='alias'>*</span><?php endif; ?></a></td>
<td><?php echo $stats['mean'] ?> s</td>
<td><?php echo $this->microformat($stats['single']) ?></td>
<td class='<?php echo ($stats['pc_group'] < 0) ? 'good' : 'bad' ?>'><?php if ($stats['pc_group'] > 0):?>+<?php endif; ?><?php echo round($stats['pc_group'], 2) ?>%</td>
<td class='<?php echo ($stats['pc_suite'] < 0) ? 'good' : 'bad' ?>'><?php if ($stats['pc_suite'] > 0):?>+<?php endif; ?><?php echo round($stats['pc_suite'], 2) ?>%</td>
</tr>
<?php endforeach; ?>
<?php endforeach; ?>
</tbody>
</table>
<div class='page-header'>
<h2>About phpperf.com</h2>
</div>
<p>The main goal of this project is to illustrate the relative costs of commonly used low-level PHP methods, and to try and give some sort
of baseline as to how long these methods can take in isolation. All too often you'll hear methods being dismissed as “expensive”
without any form of empirical evidence either way, and similarly you'll hear PHP bemoaned as being “slow” – but
of course both these terms are relative. Sure, PHP might be slow compared to other languages, but this can quickly be blown
out of proportion and lead people to assume it's actually <em>slow</em>, and that a smattering of functions will bring your application to
its knees. These tests simply exist to give some grounding and points-of-reference to these sorts of conversations.</p>
<div class='page-header'>
<h2>Disclaimer</h2>
</div>
<p>These tests don't run in a vacuum – inevitably no two runs will yield the same results, and even then only serve
as a rough baseline based on the machine I run them on – your results may differ significantly. The mechanism used to
run and time the tests probably isn't the most scientific either, so if you've got a suggestion then
please do <a href="<?php echo $this->url ?>">fork the project</a> – any improvements are welcome!</p>
<div class='page-header'>
<h2>Contributing</h2>
</div>
<p><b>phpperf</b> needs you! There are <em>loads</em> of methods and common use-cases not yet profiled.
Please see the <a href='<?php echo $this->url ?>#readme'>readme</a> file for how to add your own profiles (it's quick & easy!).
Every contributor will be listed here in the order they first helped out with the project. Think of the fame!</p>
<ul>
<li><a href="http://twitter.com/makeusabrew">@makeusabrew</a> (author)</li>
<li><a href="https://github.com/hkdobrev">@hkdobrev</a></li>
</ul>
</div>
<footer class='well container'>
<div style='float:right'>
<a href="https://twitter.com/share" class="twitter-share-button" data-via="makeusabrew" data-size="large">Tweet</a>
<a href="https://twitter.com/makeusabrew" class="twitter-follow-button" data-show-count="false" data-size="large">Follow @makeusabrew</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
</div>
Made by <a href="http://twitter.com/makeusabrew">@makeusabrew</a>.
Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License v2.0</a>.
</footer>
</body>
</html>