Dennis,

Going back to the Sorceress image it's definitely the filters that are slowing it down. It might help to understand how filters work in the SVG world, as it makes it easier to understand how the various workarounds that people have suggested will help.

Filters are essentially bitmaps generated by performing a series of mathematical operations on each pixel in the rendered image. The more pixels that need to be rendered, the more maths there is to do, and the slower the rendering will be. Rendering to a bitmap doesn't just mean exporting to PNG though; every time Inkscape draws to the screen it has to render to a bitmap.

If your filtered object takes up (say) 50 pixels in the rendered image, it can be drawn a lot faster than if it takes up 500 pixels, as there's only a tenth of the pixels to calculate. That leads to my first suggestions:

1) Zooming out will make things redraw faster, as will reducing the window size (I prefer to use a smaller window with undocked palettes for this reason, rather than running Inkscape full-screen). Try not to zoom in any further than you have to.

1a) When you do export to bitmap, higher DPI settings will lead to more pixels, more calculations and a longer export time. Try to keep the DPI and the export area down to the smallest you can get away with.


If there is any transparency involved then Inkscape has to render the object(s) below, then render the objects above, then combine the two. So our 500 pixel object, as soon as transparency is added, will result in at least 1000 pixels being calculated and combined. Even if the opacity of your objects is at 100%, many filters introduce some transparency - blurs being the most obvious. Now consider many blurred and translucent objects stacked on top of each other - that's a lot of maths to do.

That's why it can be beneficial to split your image into layers. Hiding layers means that they don't have to be calculated, and don't have to be merged with other objects, greatly reducing the amount of maths needed to re-draw the image. Bear in mind that you can also have sub-layers (and sub-sub-layers...) which can make it easier to manage drawings with lots of objects in.

2) Split your drawing into layers and hide as many as you can if performance is a problem.


Sometimes you might want to use the filtered version of an object for reference, but don't really need to have Inkscape re-calculating it all the time. Select the object(s) in question, and use Edit > Create  A Bitmap Copy to generate a bitmap with the filters "fixed". It may take a while to create the bitmap, but once done it will be a lot faster to render than the original objects. If I need to do this I do it for a whole layer of objects, so that I can then hide the layer, and put the bitmap onto the layer I'm actually working on.

3) Use bitmaps to let you "snapshot" your filtered objects for reference, then hide the originals.


Of course, the fastest option is simply not to do all the maths. If you don't need to see the filtered version to make an edit, then don't make Inkscape draw it. My final suggestion:

4) Use View > Display Mode to turn off filters as much as you can.


When you use filters or effects in The GIMP, the result is immediately fixed. If changes the colour of some pixels, then its job is done. The filter doesn't need to be re-calculated when you zoom in, but you also can't alter its parameters later on. Inkscape filters are "live" and get re-calculated for every pixel for every zoom, pan or change in the image. They are performing magnitudes more calculations than filters in The GIMP. The trick is to know and understand that difference, and try to structure your image and workflow so that you minimise the number of calculations it has to perform at any given time.

I hope that helps a little.

Mark

--
Co-creator of The Greys and Monsters, Inked webcomics

Website      http://www.peppertop.com/
Facebook   http://facebook.com/TheGreysComic
Twitter        https://twitter.com/TheGreysComic