cats-main icon indicating copy to clipboard operation
cats-main copied to clipboard

Visualize spent resources in request details

Open klenin opened this issue 10 years ago • 0 comments

The goal is to display graphs of memory/time depending on input size. Since problem packages do not currently contain explicit input size data, the method used should work even in the absence of such data.

"Resources" in question are user time, wallclock time, peak memory, written bytes and anything else measured by Spawner.

  1. Calculate standard solution resources for every test -- can be currently done by selecting last standard solution request, will also be useful for relative time limits.
  2. Optionally, cache standard solution resources in tests.
  3. (?) Add input_size field to tests, containing an arbitrary string
  4. (?) Add more detailed keywords in o namespace, e.g. o.poly.n2, 'o.nlogn` etc.
  5. (?) Add algorithmic_complexity field to problem_sources, assign it based on keywords and/or attributes in problem package.
  6. Import some JS graphing library (also use it for console graphs)
  7. On req_details page, add graph of resource/input_size
  8. Add 'Resource' selector
  9. Add 'input size source' selector of: explicit, checker comment, generator param + input file, guess by standard solution time
  10. For the first three sources add sub-selector for integer value P. For each test, select P-th integer parsed from string -- so multi-parametric problems and imported problems with verbose checkers are automatically supported.
  11. For "guess by standard time" add sub-selector or "algorithmic complexity", fill it with explicit data if available. Then, calculate approximate input size by fitting the complexity function to actual times.
  12. Display calculated data on graph, with various visual controls, in particular linear/logarithmic axes, usage of test number instead of size, displaying several graphs at once.

klenin avatar Feb 20 '15 06:02 klenin