comparison scripts/testfun/private/dump_demos.m @ 18959:4c45986a278e

dump_demos.m: Check if file exists before demo and add timing. * dump_demos.m: Skip demo if output print file already exists. Add tic/toc timing for demo (calculation + plotting) and printing. This allows benchmarks and finding regressions which causes slow plotting or printing.
author Andreas Weber <andy.weber.aw@gmail.com>
date Sat, 26 Jul 2014 12:23:11 +0200
parents 87324260043d
children
comparison
equal deleted inserted replaced
18958:c9f960441513 18959:4c45986a278e
109 fcn(end-1:end) = []; # remove .m 109 fcn(end-1:end) = []; # remove .m
110 demos = get_demos (fcn); 110 demos = get_demos (fcn);
111 for d = 1:numel (demos) 111 for d = 1:numel (demos)
112 idx = sprintf ("%02d", d); 112 idx = sprintf ("%02d", d);
113 base_fn = sprintf ("%s_%s", fcn, idx); 113 base_fn = sprintf ("%s_%s", fcn, idx);
114 fn = sprintf ('%s.%s', base_fn, fmt);
114 fprintf (fid, "\ntry\n"); 115 fprintf (fid, "\ntry\n");
116 ## First check if the file already exists, skip demo if found
117 fprintf (fid, " if (! exist ('%s', 'file'))\n", fn);
115 ## Invoke the ancient, deprecated random seed 118 ## Invoke the ancient, deprecated random seed
116 ## generators, but there is an initialization mismatch with the more modern 119 ## generators, but there is an initialization mismatch with the more modern
117 ## generators reported here (https://savannah.gnu.org/bugs/?42557). 120 ## generators reported here (https://savannah.gnu.org/bugs/?42557).
118 fprintf (fid, " rand ('seed', 1);\n"); 121 fprintf (fid, " rand ('seed', 1);\n");
122 fprintf (fid, " tic ();\n");
119 fprintf (fid, " %s\n\n", demos{d}); 123 fprintf (fid, " %s\n\n", demos{d});
120 fprintf (fid, " drawnow;\n"); 124 fprintf (fid, " t_plot = toc ();\n");
121 fprintf (fid, " fig = (get (0, 'currentfigure'));\n"); 125 fprintf (fid, " fig = (get (0, 'currentfigure'));\n");
122 fprintf (fid, " if (~ isempty (fig))\n"); 126 fprintf (fid, " if (~ isempty (fig))\n");
123 fprintf (fid, " figure (fig);\n"); 127 fprintf (fid, " figure (fig);\n");
124 fprintf (fid, " name = '%s.%s';\n", base_fn, fmt); 128 fprintf (fid, " fprintf ('Printing ""%s"" ... ');\n", fn);
125 fprintf (fid, " if (isempty (dir (name)))\n"); 129 fprintf (fid, " tic ();\n");
126 fprintf (fid, " fprintf ('Printing ""%%s"" ... ', name);\n") 130 fprintf (fid, " print ('-d%s', '%s');\n", fmt, fn);
127 fprintf (fid, " print ('-d%s', name);\n", fmt); 131 fprintf (fid, " t_print = toc ();\n");
128 fprintf (fid, " fprintf ('done\\n');\n"); 132 fprintf (fid, " fprintf ('[%%f %%f] done\\n',t_plot, t_print);\n");
129 fprintf (fid, " else\n");
130 fprintf (fid, " fprintf ('File ""%%s"" exists.\\n', name);\n")
131 fprintf (fid, " end\n");
132 fprintf (fid, " end\n"); 133 fprintf (fid, " end\n");
133 # Temporary fix for cruft accumulating in figure window. 134 # Temporary fix for cruft accumulating in figure window.
134 fprintf (fid, " close ('all');\n"); 135 fprintf (fid, " close ('all');\n");
136 fprintf (fid, " else\n");
137 fprintf (fid, " fprintf ('File ""%s"" already exists.\\n');\n", fn);
138 fprintf (fid, " end\n");
135 fprintf (fid, "catch\n"); 139 fprintf (fid, "catch\n");
136 fprintf (fid, " fprintf ('ERROR in %s: %%s\\n', lasterr ());\n", base_fn); 140 fprintf (fid, " fprintf ('ERROR in %s: %%s\\n', lasterr ());\n", base_fn);
137 fprintf (fid, " err_fid = fopen ('%s.err', 'w');\n", base_fn); 141 fprintf (fid, " err_fid = fopen ('%s.err', 'w');\n", base_fn);
138 fprintf (fid, " fprintf (err_fid, '%%s', lasterr ());\n"); 142 fprintf (fid, " fprintf (err_fid, '%%s', lasterr ());\n");
139 fprintf (fid, " fclose (err_fid);\n"); 143 fprintf (fid, " fclose (err_fid);\n");