[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[platform-swt-dev] SWT Performance suggestion

Hi All,
      I'm embarking on creating a graphical tool and have chosen to base it
on SWT, performance will be very important as the display may contain up to
a million lines. In my early experimentation I profiled some code and
noticed that before and after each native call to a graphic primitive such
as _gdk_draw_line there is a Lock.lock and Lock.unlock.

      Would it be possible to add to SWT a new drawing method that allows
me to construct an array of ints that represent a list of drawing
instructions that are sent in there entirety down to the native code for
execution, therefore eliminating the repeated thunking, locks/unlocks and
JNI round trips, there maybe also efficiencies to be had in the native
code. For example:



                  int[] drawList = new int[19];
                  int index=0;

                  drawlist[index++] = SWT.DRAW_LINE;
                  drawlist[index++] = 0;
                  drawlist[index++] = 0;
                  drawlist[index++] = 100;
                  drawlist[index++] = 100;
                  drawlist[index++] = SWT.SET_FOREGROUND;
                  drawlist[index++] = 255;
                  drawlist[index++] = 255;
                  drawlist[index++] = 255;
                  drawlist[index++] = SWT.DRAW_LINE;
                  drawlist[index++] = 0;
                  drawlist[index++] = 100;
                  drawlist[index++] = 100;
                  drawlist[index++] = 0;
                  drawlist[index++] = SWT.DRAW_LINE;
                  drawlist[index++] = 100;
                  drawlist[index++] = 100;
                  drawlist[index++] = 0;
                  drawlist[index++] = 100;


                  GC.drawList(drawList);



Paul Anderson
IBM Systems and Technology Group Lab Services
Home Office:+31-20-513-7388, Home Office:+31-70-362-9501,
Mobile:+31-651788098, paul-anderson@xxxxxxxxxx

Try Gentoo Linux (www.gentoo.org)