StitchSketch Speedup Project

Saturday, January 19, 2013
By keiji
For those who used StitchSketch probably noticed that it is very sluggish when zoomed out.
For example, say the chart size is 100 x 100 and zoomed out to x8 and the chart is filled with symbols, then it is VERY slow.

Here is why (This is kind of technical...)

  1. Architecturally, StitchSketch is built utilizing UIWebView, which is a mini-web browser on iOS. It allows writing application with HTML5/Canvas/JavaScript. Unfortunately, UIWebView is slow. It is even much slower than built-in Safari.

    It works fine with not-so-complicated application, but it is apparently not performing well for drawing application like StitchSketch.

    The reason for this architectural decision is that it is supposed to be cross platform friendly. With HTML5/Canvas, I should be able to port the application to other platform easily. (In reality, it turned out to be not that easy. So, porting StitchSketch to Android is not realistic at this point, unfortunately.)

  2. The feature of StitchSketch is showing a symbol in each cell. It is usually a Unicode character, and sometimes a drawing clip for Knitting symbols. This means, that if you draw 100x100 size's chart, it requires drawing 10000 symbols at once.
    It is quite a lot of drawing.

  3. iPad 3rd generation has a retina display with old iPad2 CPU. It is one of the reason it is slow.
    Testing with iPhone5 seems to be performing much better - so the old CPU before iPhone5/iPad4 are not powerful enough to run HTML5/Canvas.

Anyway, whatever reason it is, it is not good for the future of StitchSketch with this performance.
I have been working adding more functionality, such as adding Backstitches, but the performance problem prevented me from doing so.

Therefore, I decided to change the StitchSketch's internal architecture to solve this issue.

The plan is to migrate the core drawing engine to native code.
  1. Rewrite entire drawing engine with Quartz 2D with C++/Objective C++. This should be much better drawing performance.
    This also requires a lot of code rewriting...
  2. Rewrite part of the drawing engine with Open GL ES
    Quartz 2D is actually not powerful enough for some purpose. Ultimate goal is using Open GL for super-fast drawing.

I'm working on this project right now, and hopefully I can make StitchSketch much more powerful tool for us!

Comments

N/A
Threads/Comments closed.