changeset 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 c9f960441513
children 52e01aa1fe8b
files scripts/testfun/private/dump_demos.m
diffstat 1 files changed, 13 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/testfun/private/dump_demos.m	Sat Jul 26 10:09:48 2014 +0200
+++ b/scripts/testfun/private/dump_demos.m	Sat Jul 26 12:23:11 2014 +0200
@@ -111,27 +111,31 @@
     for d = 1:numel (demos)
       idx = sprintf ("%02d", d);
       base_fn = sprintf ("%s_%s", fcn, idx);
+      fn = sprintf ('%s.%s', base_fn, fmt);
       fprintf (fid, "\ntry\n");
+      ## First check if the file already exists, skip demo if found
+      fprintf (fid, " if (! exist ('%s', 'file'))\n", fn);
       ## Invoke the ancient, deprecated random seed
       ## generators, but there is an initialization mismatch with the more modern
       ## generators reported here (https://savannah.gnu.org/bugs/?42557).
       fprintf (fid, "  rand ('seed', 1);\n");
+      fprintf (fid, "  tic ();\n");
       fprintf (fid, "  %s\n\n", demos{d});
-      fprintf (fid, "  drawnow;\n");
+      fprintf (fid, "  t_plot = toc ();\n");
       fprintf (fid, "  fig = (get (0, 'currentfigure'));\n");
       fprintf (fid, "  if (~ isempty (fig))\n");
       fprintf (fid, "    figure (fig);\n");
-      fprintf (fid, "    name = '%s.%s';\n", base_fn, fmt);
-      fprintf (fid, "    if (isempty (dir (name)))\n");
-      fprintf (fid, "      fprintf ('Printing ""%%s"" ... ', name);\n")
-      fprintf (fid, "      print ('-d%s', name);\n", fmt);
-      fprintf (fid, "      fprintf ('done\\n');\n");
-      fprintf (fid, "    else\n");
-      fprintf (fid, "      fprintf ('File ""%%s"" exists.\\n', name);\n")
-      fprintf (fid, "    end\n");
+      fprintf (fid, "      fprintf ('Printing ""%s"" ... ');\n", fn);
+      fprintf (fid, "      tic ();\n");
+      fprintf (fid, "      print ('-d%s', '%s');\n", fmt, fn);
+      fprintf (fid, "      t_print = toc ();\n");
+      fprintf (fid, "      fprintf ('[%%f %%f] done\\n',t_plot, t_print);\n");
       fprintf (fid, "  end\n");
       # Temporary fix for cruft accumulating in figure window.
       fprintf (fid, "  close ('all');\n");
+      fprintf (fid, " else\n");
+      fprintf (fid, "   fprintf ('File ""%s"" already exists.\\n');\n", fn);
+      fprintf (fid, " end\n");
       fprintf (fid, "catch\n");
       fprintf (fid, "  fprintf ('ERROR in %s: %%s\\n', lasterr ());\n", base_fn);
       fprintf (fid, "  err_fid = fopen ('%s.err', 'w');\n", base_fn);