Performance: Ways to Improve

Common techniques

Starting from 1000-2000 tasks, depending on what configuration options and plugins you use, there may be delays in rendering the Gantt chart on the page.

There are the following ways to solve this problem:

  1. To disable the rendering of single cells and leave just rendering of rows (set the show_task_cells option to 'false')
  2. To set the background image for the timeline area instead of rendering the actual lines (set the static_background option to 'true') (PRO functionality)
  3. To enable the dynamic loading (set the branch_loading option to 'true')
  4. To increase the scale's step (set the unit property of the scales option to "month" or "year")
  5. To decrease the range of displayable dates (use the start_date and end_date options)
  6. To remove progress bars from the tasks (set the show_progress option to 'false')
  7. To enhance the speed of the scale rendering (enable the smart_scales option in case it's disabled)
  8. If you use work time calendars, be sure to set the worktime settings before loading data into the gantt. Otherwise, durations of all tasks will be recalculated twice - firstly, when the tasks are loaded, and then, when the new calendar is applied. In any case, everything should work correctly, but such recalculations may increase the initialization time of your app.
  9. If you specify the duration_unit config to "hour" or "minute", be sure to set the duration_step to 1. Such combination activates certain optimizations for calculations of working time, that works only when the step is set to 1. Note, that there are major performance differences between "optimized" and "non-optimized" modes.

Related sample:  Performance tweaks

Smart Rendering

The Smart Rendering technique allows considerably enhancing the speed of data rendering, while working with big amounts of data. In this mode only the tasks and links visible on the screen at the moment are being rendered.

Starting from v6.2, the smart rendering is enabled by default, as it is included in the core dhtmlxgantt.js file. Thus, you don't need to include the dhtmlxgantt_smart_rendering.js file on the page to make smart rendering work.

If you connect the dhtmlxgantt_smart_rendering.js file, which is from the old version, it will override the improvements of the new built-in smart_rendering extension.

If you need to disable the smart rendering mode, you can set the corresponding configuration parameter to false:

gantt.config.smart_rendering = false;

Related sample:  Working with 30000 tasks

The process of usual smart rendering is to check whether the position of a gantt element falls within the area visible on the screen and define whether to display it or not.

However, the smart rendering of custom layers enables only the vertical Smart rendering by default. It means, that the custom layers will be rendered when the row of the specified task is in the view port. But the exact coordinates of a custom element can't be calculated and the whole row of the task in the timeline is taken as its position.
You may refer to the addTaskLayer article to learn how to enable the horizontal Smart rendering for custom layers.

Working with a large date range

This functionality is available only in PRO version

If you use a big date range in your project, you may also want to enable the static_background parameter in addition to smart rendering:

gantt.config.static_background = true;

Related sample:  Performance tweaks

Back to top