Skip to content

Profile the rendering process and document scope for optimisations #98

@craigfowler

Description

@craigfowler

The performance of the ZPT renderer has not yet been considered at all, and there has been little-to-no effort to make it performant at all. Now that I am increasing my usage of the renderer and that I am facing timeout issues in Screenplay reports, the tone is right to do some benchmarking and profiling and then to optimise the rendering engine.

Profiling

Firstly, I need to profile the engine under some typical circumstances. To do this, I will need to create some test pages to profile.

The profiling should be performed against ASP.NET MVC 5, and each profile should be compared against a profile for the equivalent page (with an equivalent model) using the Razor rendering engine.

A number of test profiles should be created (using a variety of techniques). Particularly important are:

  • C# expressions
  • Loops (large and small, between 5 and 10,000 iterations)
  • Nested loops
  • METAL macro usage
  • Macro usage within a loop
  • load expressions
  • The various document type plugins

The results of the profiling should be recorded within/attached to this ticket. This can then be referred-to in the future for further work as applicable.

Optimisation

The actual optimisation will be decided by the results of the benchmarking and profiling.

Importantly, I'm expecting a marked speed improvement in the rendering of large documents.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementAn improvement, new feature or other addition to the project

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions