annotate scripts/testfun/speed.m @ 14237:11949c9795a0

Revamp %!demos in m-files to use Octave coding conventions on spacing, etc. Add clf() to all demos using plot features to get reproducibility. Use 64 as input to all colormaps (jet (64)) to get reproducibility. * bicubic.m, cell2mat.m, celldisp.m, cplxpair.m, interp1.m, interp2.m, interpft.m, interpn.m, profile.m, profshow.m, convhull.m, delaunay.m, griddata.m, inpolygon.m, voronoi.m, autumn.m, bone.m, contrast.m, cool.m, copper.m, flag.m, gmap40.m, gray.m, hot.m, hsv.m, image.m, imshow.m, jet.m, ocean.m, pink.m, prism.m, rainbow.m, spring.m, summer.m, white.m, winter.m, condest.m, onenormest.m, axis.m, clabel.m, colorbar.m, comet.m, comet3.m, compass.m, contour.m, contour3.m, contourf.m, cylinder.m, daspect.m, ellipsoid.m, errorbar.m, ezcontour.m, ezcontourf.m, ezmesh.m, ezmeshc.m, ezplot.m, ezplot3.m, ezpolar.m, ezsurf.m, ezsurfc.m, feather.m, fill.m, fplot.m, grid.m, hold.m, isosurface.m, legend.m, loglog.m, loglogerr.m, pareto.m, patch.m, pbaspect.m, pcolor.m, pie.m, pie3.m, plot3.m, plotmatrix.m, plotyy.m, polar.m, quiver.m, quiver3.m, rectangle.m, refreshdata.m, ribbon.m, rose.m, scatter.m, scatter3.m, semilogx.m, semilogxerr.m, semilogy.m, semilogyerr.m, shading.m, slice.m, sombrero.m, stairs.m, stem.m, stem3.m, subplot.m, surf.m, surfc.m, surfl.m, surfnorm.m, text.m, title.m, trimesh.m, triplot.m, trisurf.m, uigetdir.m, uigetfile.m, uimenu.m, uiputfile.m, waitbar.m, xlim.m, ylim.m, zlim.m, mkpp.m, pchip.m, polyaffine.m, spline.m, bicgstab.m, cgs.m, gplot.m, pcg.m, pcr.m, treeplot.m, strtok.m, demo.m, example.m, rundemos.m, speed.m, test.m, calendar.m, datestr.m, datetick.m, weekday.m: Revamp %!demos to use Octave coding conventions on spacing, etc.
author Rik <octave@nomad.inbox5.com>
date Fri, 20 Jan 2012 12:59:53 -0800
parents 72c96de7a403
children f3d52523cde1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14138
72c96de7a403 maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents: 13283
diff changeset
1 ## Copyright (C) 2000-2012 Paul Kienzle
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
2 ##
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
3 ## This file is part of Octave.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
4 ##
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
6 ## under the terms of the GNU General Public License as published by
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
8 ## your option) any later version.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
9 ##
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
13 ## General Public License for more details.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
14 ##
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
17 ## <http://www.gnu.org/licenses/>.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
18
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
19 ## -*- texinfo -*-
10793
be55736a0783 Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents: 10791
diff changeset
20 ## @deftypefn {Function File} {} speed (@var{f}, @var{init}, @var{max_n}, @var{f2}, @var{tol})
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
21 ## @deftypefnx {Function File} {[@var{order}, @var{n}, @var{T_f}, @var{T_f2}] =} speed (@dots{})
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
22 ##
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
23 ## Determine the execution time of an expression (@var{f}) for various input
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
24 ## values (@var{n}). The @var{n} are log-spaced from 1 to @var{max_n}. For
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
25 ## each @var{n}, an initialization expression (@var{init}) is computed to
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
26 ## create any data needed for the test. If a second expression (@var{f2}) is
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
27 ## given then the execution times of the two expressions are compared. When
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
28 ## called without output arguments the results are printed to stdout and
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
29 ## displayed graphically.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
30 ##
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
31 ## @table @code
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
32 ## @item @var{f}
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
33 ## The code expression to evaluate.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
34 ##
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
35 ## @item @var{max_n}
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
36 ## The maximum test length to run. The default value is 100. Alternatively,
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
37 ## use @code{[min_n, max_n]} or specify the @var{n} exactly with
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
38 ## @code{[n1, n2, @dots{}, nk]}.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
39 ##
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
40 ## @item @var{init}
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
41 ## Initialization expression for function argument values. Use @var{k}
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
42 ## for the test number and @var{n} for the size of the test. This should
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
43 ## compute values for all variables used by @var{f}. Note that @var{init} will
8507
cadc73247d65 style fixes
John W. Eaton <jwe@octave.org>
parents: 8506
diff changeset
44 ## be evaluated first for @math{k = 0}, so things which are constant throughout
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
45 ## the test series can be computed once. The default value is
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
46 ## @code{@var{x} = randn (@var{n}, 1)}.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
47 ##
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
48 ## @item @var{f2}
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
49 ## An alternative expression to evaluate, so that the speed of two
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
50 ## expressions can be directly compared. The default is @code{[]}.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
51 ##
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
52 ## @item @var{tol}
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
53 ## Tolerance used to compare the results of expression @var{f} and expression
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
54 ## @var{f2}. If @var{tol} is positive, the tolerance is an absolute one.
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
55 ## If @var{tol} is negative, the tolerance is a relative one. The default is
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
56 ## @code{eps}. If @var{tol} is @code{Inf}, then no comparison will be made.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
57 ##
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
58 ## @item @var{order}
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
59 ## The time complexity of the expression @math{O(a*n^p)}. This
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
60 ## is a structure with fields @code{a} and @code{p}.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
61 ##
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
62 ## @item @var{n}
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
63 ## The values @var{n} for which the expression was calculated @strong{AND}
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
64 ## the execution time was greater than zero.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
65 ##
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
66 ## @item @var{T_f}
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
67 ## The nonzero execution times recorded for the expression @var{f} in seconds.
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
68 ##
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
69 ## @item @var{T_f2}
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
70 ## The nonzero execution times recorded for the expression @var{f2} in seconds.
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
71 ## If required, the mean time ratio is simply @code{mean (T_f ./ T_f2)}.
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
72 ##
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
73 ## @end table
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
74 ##
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
75 ## The slope of the execution time graph shows the approximate
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
76 ## power of the asymptotic running time @math{O(n^p)}. This
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
77 ## power is plotted for the region over which it is approximated
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
78 ## (the latter half of the graph). The estimated power is not
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
79 ## very accurate, but should be sufficient to determine the
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
80 ## general order of an algorithm. It should indicate if, for
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
81 ## example, the implementation is unexpectedly @math{O(n^2)}
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
82 ## rather than @math{O(n)} because it extends a vector each
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
83 ## time through the loop rather than pre-allocating storage.
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
84 ## In the current version of Octave, the following is not the
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
85 ## expected @math{O(n)}.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
86 ##
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
87 ## @example
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
88 ## speed ("for i = 1:n, y@{i@} = x(i); endfor", "", [1000, 10000])
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
89 ## @end example
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
90 ##
10846
a4f482e66b65 Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
91 ## @noindent
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
92 ## But it is if you preallocate the cell array @code{y}:
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
93 ##
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
94 ## @example
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
95 ## @group
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
96 ## speed ("for i = 1:n, y@{i@} = x(i); endfor", ...
8507
cadc73247d65 style fixes
John W. Eaton <jwe@octave.org>
parents: 8506
diff changeset
97 ## "x = rand (n, 1); y = cell (size (x));", [1000, 10000])
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
98 ## @end group
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
99 ## @end example
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
100 ##
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
101 ## An attempt is made to approximate the cost of individual
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
102 ## operations, but it is wildly inaccurate. You can improve the
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
103 ## stability somewhat by doing more work for each @code{n}. For
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
104 ## example:
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
105 ##
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
106 ## @example
8507
cadc73247d65 style fixes
John W. Eaton <jwe@octave.org>
parents: 8506
diff changeset
107 ## speed ("airy(x)", "x = rand (n, 10)", [10000, 100000])
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
108 ## @end example
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
109 ##
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
110 ## When comparing two different expressions (@var{f}, @var{f2}), the slope
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
111 ## of the line on the speedup ratio graph should be larger than 1 if the new
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
112 ## expression is faster. Better algorithms have a shallow slope. Generally,
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
113 ## vectorizing an algorithm will not change the slope of the execution
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
114 ## time graph, but will shift it relative to the original. For
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
115 ## example:
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
116 ##
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
117 ## @example
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
118 ## @group
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
119 ## speed ("sum (x)", "", [10000, 100000], ...
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
120 ## "v = 0; for i = 1:length (x), v += x(i); endfor")
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
121 ## @end group
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
122 ## @end example
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
123 ##
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
124 ## The following is a more complex example. If there was an original version
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
125 ## of @code{xcorr} using for loops and a second version using an FFT, then
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
126 ## one could compare the run speed for various lags as follows, or for a fixed
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
127 ## lag with varying vector lengths as follows:
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
128 ##
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
129 ## @example
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
130 ## @group
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
131 ## speed ("xcorr (x, n)", "x = rand (128, 1);", 100,
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
132 ## "xcorr_orig (x, n)", -100*eps)
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
133 ## speed ("xcorr (x, 15)", "x = rand (20+n, 1);", 100,
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
134 ## "xcorr_orig (x, n)", -100*eps)
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
135 ## @end group
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
136 ## @end example
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
137 ##
11314
87f258202b0f speed.m: Overhaul documentation string.
Rik <octave@nomad.inbox5.com>
parents: 10846
diff changeset
138 ## Assuming one of the two versions is in xcorr_orig, this
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
139 ## would compare their speed and their output values. Note that the
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
140 ## FFT version is not exact, so one must specify an acceptable tolerance on
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
141 ## the comparison @code{100*eps}. In this case, the comparison should be
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
142 ## computed relatively, as @code{abs ((@var{x} - @var{y}) ./ @var{y})} rather
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
143 ## than absolutely as @code{abs (@var{x} - @var{y})}.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
144 ##
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
145 ## Type @kbd{example ("speed")} to see some real examples or
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
146 ## @kbd{demo ("speed")} to run them.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
147 ## @end deftypefn
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
148
8202
cf59d542f33e replace all TODOs and XXXs with FIXMEs
Jaroslav Hajek <highegg@gmail.com>
parents: 7540
diff changeset
149 ## FIXME: consider two dimensional speedup surfaces for functions like kron.
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
150 function [__order, __test_n, __tnew, __torig] = speed (__f1, __init, __max_n = 100, __f2 = "", __tol = eps)
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
151
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
152 if (nargin < 1 || nargin > 6)
6046
34f96dd5441b [project @ 2006-10-10 16:10:25 by jwe]
jwe
parents: 5798
diff changeset
153 print_usage ();
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
154 endif
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
155
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
156 if (nargin < 2 || isempty (__init))
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
157 __init = "x = randn (n, 1)";
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
158 endif
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
159
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
160 if (isempty (__max_n))
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
161 __max_n = 100;
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
162 endif
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
163
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
164 __numtests = 15;
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
165
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8202
diff changeset
166 ## Let user specify range of n.
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
167 if (isscalar (__max_n))
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
168 __min_n = 1;
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
169 assert (__max_n > __min_n);
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
170 __test_n = logspace (0, log10 (__max_n), __numtests);
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
171 elseif (length (__max_n) == 2)
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
172 [__min_n, __max_n] = deal (__max_n(1), __max_n(2));
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
173 assert (__min_n >= 1);
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
174 assert (__max_n > __min_n);
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
175 __test_n = logspace (log10 (__min_n), log10 (__max_n), __numtests);
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
176 else
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
177 assert (all (__max_n > 0));
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
178 __test_n = __max_n;
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
179 endif
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8202
diff changeset
180 ## Force n to be an integer.
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8202
diff changeset
181 __test_n = unique (round (__test_n));
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
182 assert (__test_n >= 1);
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
183
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
184 __torig = __tnew = zeros (size (__test_n));
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
185
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
186 ## Print and plot the data if no output is requested.
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
187 do_display = (nargout == 0);
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
188
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
189 if (do_display)
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
190 disp (cstrcat ("testing ", __f1, "\ninit: ", __init));
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
191 endif
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
192
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
193 ## Add semicolon closure to all code fragments in case user has not done so.
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
194 __init = cstrcat (__init, ";");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
195 __f1 = cstrcat (__f1, ";");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
196 if (! isempty (__f2))
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
197 __f2 = cstrcat (__f2, ";");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
198 endif
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
199
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8202
diff changeset
200 ## Make sure the functions are freshly loaded by evaluating them at
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
201 ## test_n(1); first have to initialize the args though.
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
202 n = 1;
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
203 k = 0;
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
204 eval (__init);
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
205 eval (__f1);
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
206 if (! isempty (__f2))
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
207 eval (__f2);
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
208 endif
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
209
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8202
diff changeset
210 ## Run the tests.
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
211 for k = 1:length (__test_n)
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
212 n = __test_n(k);
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
213 eval (__init);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
214
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
215 if (do_display)
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
216 printf ("n%i = %i ", k, n);
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
217 fflush (stdout);
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
218 endif
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
219
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
220 eval (cstrcat ("__t = time();", __f1, "__v1=ans; __t = time()-__t;"));
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
221 if (__t < 0.25)
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
222 eval (cstrcat ("__t2 = time();", __f1, "__t2 = time()-__t2;"));
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
223 eval (cstrcat ("__t3 = time();", __f1, "__t3 = time()-__t3;"));
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
224 __t = min ([__t, __t2, __t3]);
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
225 endif
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
226 __tnew(k) = __t;
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
227
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
228 if (! isempty (__f2))
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
229 eval (cstrcat ("__t = time();", __f2, "__v2=ans; __t = time()-__t;"));
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
230 if (__t < 0.25)
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
231 eval (cstrcat ("__t2 = time();", __f2, "__t2 = time()-__t2;"));
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
232 eval (cstrcat ("__t3 = time();", __f2, "__t3 = time()-__t3;"));
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
233 __t = min ([__t, __t2, __t3]);
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
234 endif
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
235 __torig(k) = __t;
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
236 if (! isinf(__tol))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9051
diff changeset
237 assert (__v1, __v2, __tol);
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
238 endif
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
239 endif
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
240
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
241 endfor
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
242
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8202
diff changeset
243 ## Drop times of zero.
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
244 if (isempty (__f2))
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
245 zidx = (__tnew < 100*eps);
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
246 __test_n(zidx) = [];
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
247 __tnew(zidx) = [];
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
248 else
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
249 zidx = (__tnew < 100*eps | __torig < 100*eps);
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
250 __test_n(zidx) = [];
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
251 __tnew(zidx) = [];
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
252 __torig(zidx) = [];
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
253 endif
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
254
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
255 if (isempty (__test_n))
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
256 error (["speed: All running times were zero.\n",
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
257 "error: speed: Choose larger MAX_N or do more work per function evaluation"]);
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
258 endif
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
259
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8202
diff changeset
260 ## Approximate time complexity and return it if requested.
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
261 tailidx = ceil (length (__test_n)/2):length (__test_n);
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
262 p = polyfit (log (__test_n(tailidx)), log (__tnew(tailidx)), 1);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
263 if (nargout > 0)
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
264 __order.p = p(1);
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
265 __order.a = exp (p(2));
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
266 endif
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
267
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
268 if (do_display)
6430
215b141470b4 [project @ 2007-03-21 20:58:08 by dbateman]
dbateman
parents: 6429
diff changeset
269 figure;
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
270 ## Strip semicolon added to code fragments before displaying
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
271 __init(end) = "";
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
272 __f1(end) = "";
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
273 if (! isempty (__f2))
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
274 __f2(end) = "";
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
275 endif
6430
215b141470b4 [project @ 2007-03-21 20:58:08 by dbateman]
dbateman
parents: 6429
diff changeset
276 endif
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
277
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
278 if (do_display && isempty (__f2))
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
279
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
280 loglog (__test_n, __tnew*1000, "*-g;execution time;");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
281 xlabel ("test length");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
282 ylabel ("best execution time (ms)");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
283 title ({__f1, cstrcat("init: ", __init)});
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
284
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
285 elseif (do_display)
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
286
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
287 subplot (1, 2, 1);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
288 semilogx (__test_n, __torig./__tnew,
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
289 cstrcat ("-*r;", strrep (__f1, ";", "."), " / ",
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
290 strrep (__f2, ";", "."), ";"),
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9051
diff changeset
291 __test_n, __tnew./__torig,
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
292 cstrcat ("-*g;", strrep (__f2, ";", "."), " / ",
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
293 strrep (__f1, ";", "."), ";"));
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
294 title ("Speedup Ratio");
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
295 xlabel ("test length");
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
296 ylabel ("speedup ratio");
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
297
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
298 subplot (1, 2, 2);
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
299 loglog (__test_n, __tnew*1000,
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
300 cstrcat ("*-g;", strrep (__f1, ";", "."), ";"),
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9051
diff changeset
301 __test_n, __torig*1000,
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9051
diff changeset
302 cstrcat ("*-r;", strrep (__f2,";","."), ";"));
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
303 title ({"Execution Times", cstrcat("init: ", __init)});
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
304 xlabel ("test length");
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
305 ylabel ("best execution time (ms)");
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
306
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
307 ratio = mean (__torig ./ __tnew);
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
308 printf ("\n\nMean runtime ratio = %.3g for '%s' vs '%s'\n",
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
309 ratio, __f2, __f1);
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
310
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
311 endif
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
312
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
313 if (do_display)
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
314
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
315 ## Plot time complexity approximation (using milliseconds).
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
316 figure; # Open second plot window
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
317
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
318 order = round (10*p(1))/10;
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
319 if (order >= 0.1)
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
320 order = sprintf ("O(n^%g)", order);
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
321 else
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
322 order = "O(1)";
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
323 endif
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
324 v = polyval (p, log (__test_n(tailidx)));
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
325
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
326 loglog (__test_n(tailidx), exp(v)*1000, sprintf ("b;%s;", order));
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
327 title ({"Time Complexity", __f1});
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
328 xlabel ("test length");
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
329
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8202
diff changeset
330 ## Get base time to 1 digit of accuracy.
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
331 dt = exp (p(2));
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
332 dt = floor (dt/10^floor(log10(dt)))*10^floor(log10(dt));
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
333 if (log10 (dt) >= -0.5)
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
334 time = sprintf ("%g s", dt);
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
335 elseif (log10 (dt) >= -3.5)
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
336 time = sprintf ("%g ms", dt*1e3);
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
337 elseif (log10 (dt) >= -6.5)
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
338 time = sprintf ("%g us", dt*1e6);
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
339 else
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6430
diff changeset
340 time = sprintf ("%g ns", dt*1e9);
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
341 endif
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
342
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
343 ## Display nicely formatted complexity.
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
344 printf ("\nFor %s:\n", __f1);
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
345 printf (" asymptotic power: %s\n", order);
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
346 printf (" approximate time per operation: %s\n", time);
5798
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
347
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
348 endif
7e7ed81f5566 [project @ 2006-05-09 17:24:33 by jwe]
jwe
parents: 5589
diff changeset
349
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
350 endfunction
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
351
13274
b48e11427ac0 speed.m: Fix 2 intermittently failing tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13065
diff changeset
352
b48e11427ac0 speed.m: Fix 2 intermittently failing tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13065
diff changeset
353 %% FIXME: Demos with declared functions do not work. See bug #31815.
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
354 %% A workaround has been hacked by not declaring the functions
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
355 %% but using eval to create them in the proper context.
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
356 %% Unfortunately, we can't remove them from the user's workspace
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
357 %% because of another bug (#34497).
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
358 %!demo
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
359 %! fstr_build_orig = cstrcat (
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
360 %! "function x = build_orig (n)\n",
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
361 %! " ## extend the target vector on the fly\n",
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
362 %! " for i=0:n-1, x([1:100]+i*100) = 1:100; endfor\n",
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
363 %! "endfunction");
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
364 %! fstr_build = cstrcat (
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
365 %! "function x = build (n)\n",
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
366 %! " ## preallocate the target vector\n",
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
367 %! " x = zeros (1, n*100);\n",
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
368 %! " for i=0:n-1, x([1:100]+i*100) = 1:100; endfor\n",
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
369 %! "endfunction");
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
370 %!
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
371 %! disp ("-----------------------");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
372 %! disp (fstr_build_orig);
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
373 %! disp ("-----------------------");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
374 %! disp (fstr_build);
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
375 %! disp ("-----------------------");
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
376 %!
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
377 %! ## Eval functions strings to create them in the current context
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
378 %! eval (fstr_build_orig);
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
379 %! eval (fstr_build);
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
380 %!
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
381 %! disp ("Preallocated vector test.\nThis takes a little while...");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
382 %! speed("build (n)", "", 1000, "build_orig (n)");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
383 %! clear -f build build_orig
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
384 %! disp ("-----------------------");
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
385 %! disp ("Note how much faster it is to pre-allocate a vector.");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
386 %! disp ("Notice the peak speedup ratio.");
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
387
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
388 %!demo
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
389 %! fstr_build_orig = cstrcat (
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
390 %! "function x = build_orig (n)\n",
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
391 %! " for i=0:n-1, x([1:100]+i*100) = 1:100; endfor\n",
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
392 %! "endfunction");
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
393 %! fstr_build = cstrcat (
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
394 %! "function x = build (n)\n",
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
395 %! " idx = [1:100]';\n",
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
396 %! " x = idx(:,ones(1,n));\n",
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
397 %! " x = reshape (x, 1, n*100);\n",
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
398 %! "endfunction");
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
399 %!
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
400 %! disp ("-----------------------");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
401 %! disp (fstr_build_orig);
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
402 %! disp ("-----------------------");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
403 %! disp (fstr_build);
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
404 %! disp ("-----------------------");
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
405 %!
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
406 %! ## Eval functions strings to create them in the current context
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
407 %! eval (fstr_build_orig);
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
408 %! eval (fstr_build);
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
409 %!
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
410 %! disp ("Vectorized test.\nThis takes a little while...");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
411 %! speed("build (n)", "", 1000, "build_orig (n)");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
412 %! clear -f build build_orig
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
413 %! disp ("-----------------------");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
414 %! disp ("This time, the for loop is done away with entirely.");
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
415 %! disp ("Notice how much bigger the speedup is than in example 1.");
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
416
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
417 %!test
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
418 %! [order, n, T_f1, T_f2] = speed ("airy (x)", "x = rand (n, 10)", [100, 1000]);
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
419 %! assert (isstruct (order));
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
420 %! assert (size (order), [1, 1]);
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
421 %! assert (fieldnames (order), {"p"; "a"});
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
422 %! assert (isnumeric (n));
13274
b48e11427ac0 speed.m: Fix 2 intermittently failing tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13065
diff changeset
423 %! assert (length (n) > 10);
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
424 %! assert (isnumeric (T_f1));
13276
d5c8c2fe2eed speed.m: Further fixes for 2 speed tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13274
diff changeset
425 %! assert (size (T_f1), size (n));
13274
b48e11427ac0 speed.m: Fix 2 intermittently failing tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13065
diff changeset
426 %! assert (isnumeric (T_f2));
13276
d5c8c2fe2eed speed.m: Further fixes for 2 speed tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13274
diff changeset
427 %! assert (length (T_f2) > 10);
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
428
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
429 %% This test is known to fail on operating systems with low resolution timers
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
430 %% such as MinGW
13283
5d3d802c772e speed.m: Overhaul code to fix broken demos and tests (Bug #34234, Bug #31815)
Rik <octave@nomad.inbox5.com>
parents: 13276
diff changeset
431 %!xtest
13276
d5c8c2fe2eed speed.m: Further fixes for 2 speed tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13274
diff changeset
432 %! [order, n, T_f1, T_f2] = speed ("sum (x)", "", [100, 1000], "v = 0; for i = 1:length (x), v += x(i); endfor");
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
433 %! assert (isstruct (order));
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
434 %! assert (size (order), [1, 1]);
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
435 %! assert (fieldnames (order), {"p"; "a"});
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
436 %! assert (isnumeric (n));
13274
b48e11427ac0 speed.m: Fix 2 intermittently failing tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13065
diff changeset
437 %! assert (length (n) > 10);
13065
1ca3cde15b18 codepsprint: tests for testfun functions
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
438 %! assert (isnumeric (T_f1));
13276
d5c8c2fe2eed speed.m: Further fixes for 2 speed tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13274
diff changeset
439 %! assert (size (T_f1), size (n));
13274
b48e11427ac0 speed.m: Fix 2 intermittently failing tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13065
diff changeset
440 %! assert (isnumeric (T_f2));
13276
d5c8c2fe2eed speed.m: Further fixes for 2 speed tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13274
diff changeset
441 %! assert (length (T_f2) > 10);
13274
b48e11427ac0 speed.m: Fix 2 intermittently failing tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13065
diff changeset
442
b48e11427ac0 speed.m: Fix 2 intermittently failing tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13065
diff changeset
443 %% Test input validation
b48e11427ac0 speed.m: Fix 2 intermittently failing tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13065
diff changeset
444 %!error speed ();
b48e11427ac0 speed.m: Fix 2 intermittently failing tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13065
diff changeset
445 %!error speed (1, 2, 3, 4, 5, 6, 7);
b48e11427ac0 speed.m: Fix 2 intermittently failing tests (Bug #34234)
Rik <octave@nomad.inbox5.com>
parents: 13065
diff changeset
446