Sneak peek: improving the performance and memory footprint of Excel and PDF export from WinForms grid (coming in v2011.1)

ctodx
05 April 2011

Through valuable customer feedback and our own testing, we realized that our exporting engine wasn’t all it was cracked up to be, especially with regard to raw performance and memory usage. The call went out: increase the performance, and, at the same time, reduce the amount of memory used. I’ve now received the results of our benchmark and it’s time to reveal all.

photo © 2008 Nathan | more info (via: Wylio)What we used. The latest version of DXperience v2010.2 and the current internal alpha build for DXperience v2011.1.

What we timed/measured. We used 4 benchmarks:

  1. XtraGrid with 50,000 records and 5 columns (1 integer, 1 date, 1 text, 1 float, 1 checkbox). A quarter of a million cells.
  2. XtraGrid with 100,000 records and 5 columns (1 integer, 1 date, 1 text, 1 float, 1 checkbox). Half a million cells.
  3. XtraGrid with 50,000 records and 20 columns (1 integer, 1 checkbox, 18 text with random contents, between 8 and 10 chars). A million cells.
  4. XtraGrid with 100,000 records and 20 columns (1 integer, 1 checkbox, 18 text with random contents, between 8 and 10 chars). Two million cells.

The platform. Reasonably standard developer box running Windows 7, 64-bit. (32-bit can’t process this amount of data.)

The results.

  v2010.2 v2011.1 % change
  Mem (MB) Time (sec) Mem (MB) Time (sec) Memory Time
50k rows * 5 cols
xls 540 126 117 7.5 -78% -94%
xlsx 743 152 146 8.2 -80% -95%
pdf 485 162 40 37.0 -92% -77%
preview 480 122 32 4.9 -93% -96%
100k rows * 5 cols
xls - - - - - -
xlsx 2416 741 206 16 -99% -98%
pdf 963 573 80 73 -92% -87%
preview 956 447 65 9 -93% -98%
50k rows * 20 cols
xls 3016 637 476 28 -84% -96%
xlsx 6073 2721 595 35 -90% -99%
pdf   >3000 163 128   HUGE
preview 2848 610 130 17 -95% -97%
100k rows * 20 cols
xls - - - - - -
xlsx   >3000 997 74   HUGE
pdf   >3000 316 264   HUGE
preview
>3000 265 32
HUGE

Notes: OK, so we got bored on some of the tests with DXperience v2010.2. We basically abandoned the test if it took more than 50 minutes (3000 seconds). To be honest, we have better things to do. So where it says HUGE, assume it means the percentage change was between –99% and –99.9999%.

Together with these performance and memory improvements, we’ve made some small UI changes:

  • We’ve added the ability to show progress for export/print/preview:

    ExportProgress
  • It also has the ability to provide a Cancel button to halt the process:

    ExportProgressCancel
  • For the new Instant Feedback UI, we’ve added a marquee progress bar for when the grid is loading data from the server:

    LoadingMarquee

We’ve also made some changes to help with exporting to Excel. Selected editors (CheckEdit, ImageComboBoxEdit, ColorEdit) will now export a textual representation rather than an image, as before. So for example, in v2010.2 and earlier, if you exported the contents of a CheckEdit column, you would get this:

CurrentExportCheckbox

Where the cells are images. Actually that’s not quite right, there was an issue where, if you deleted the column, the images would remain (wacky but true):

CurrentExportCheckboxError 

Anyway, forget all that because from v2011.1 onwards, you will get this:

NewExportCheckbox

Stay tuned for more WinForms news in DXperience v2011.1.

Free DevExpress Products - Get Your Copy Today

The following free DevExpress product offers remain available. Should you have any questions about the free offers below, please submit a ticket via the DevExpress Support Center at your convenience. We'll be happy to follow-up.
No Comments

Please login or register to post comments.