Drawing performance
Posted: 2010-03-16T15:14:35-07:00
Hello,
I've written a chessboard diagram generator using ImageMagick and now that it's becoming more and more popular, I need to optimize it. A typical, simple board is generated with the following ImageMagick command:
The command consists of roughly 4 parts:
Perhaps I am doing this the wrong way? Could you suggest ways to improve performance?
Thanks,
Alexander (aka Sasha) Maryanovsky.
I've written a chessboard diagram generator using ImageMagick and now that it's becoming more and more popular, I need to optimize it. A typical, simple board is generated with the following ImageMagick command:
Code: Select all
convert -size 320x320 xc:none -fill 'rgb(255,204,153)' -draw 'rectangle 0,0,39,39 rectangle 0,80,39,119 rectangle 0,160,39,199 rectangle 0,240,39,279 rectangle 40,40,79,79 rectangle 40,120,79,159 rectangle 40,200,79,239 rectangle 40,280,79,319 rectangle 80,0,119,39 rectangle 80,80,119,119 rectangle 80,160,119,199 rectangle 80,240,119,279 rectangle 120,40,159,79 rectangle 120,120,159,159 rectangle 120,200,159,239 rectangle 120,280,159,319 rectangle 160,0,199,39 rectangle 160,80,199,119 rectangle 160,160,199,199 rectangle 160,240,199,279 rectangle 200,40,239,79 rectangle 200,120,239,159 rectangle 200,200,239,239 rectangle 200,280,239,319 rectangle 240,0,279,39 rectangle 240,80,279,119 rectangle 240,160,279,199 rectangle 240,240,279,279 rectangle 280,40,319,79 rectangle 280,120,319,159 rectangle 280,200,319,239 rectangle 280,280,319,319 ' -fill 'rgb(143,96,79)' -draw 'rectangle 0,40,39,79 rectangle 0,120,39,159 rectangle 0,200,39,239 rectangle 0,280,39,319 rectangle 40,0,79,39 rectangle 40,80,79,119 rectangle 40,160,79,199 rectangle 40,240,79,279 rectangle 80,40,119,79 rectangle 80,120,119,159 rectangle 80,200,119,239 rectangle 80,280,119,319 rectangle 120,0,159,39 rectangle 120,80,159,119 rectangle 120,160,159,199 rectangle 120,240,159,279 rectangle 160,40,199,79 rectangle 160,120,199,159 rectangle 160,200,199,239 rectangle 160,280,199,319 rectangle 200,0,239,39 rectangle 200,80,239,119 rectangle 200,160,239,199 rectangle 200,240,239,279 rectangle 240,40,279,79 rectangle 240,120,279,159 rectangle 240,200,279,239 rectangle 240,280,279,319 rectangle 280,0,319,39 rectangle 280,80,319,119 rectangle 280,160,319,199 rectangle 280,240,319,279 ' -draw 'image Over 0,0 0,0 pieces/alpha/40/br.png image Over 40,0 0,0 pieces/alpha/40/bn.png image Over 80,0 0,0 pieces/alpha/40/bb.png image Over 120,0 0,0 pieces/alpha/40/bq.png image Over 160,0 0,0 pieces/alpha/40/bk.png image Over 200,0 0,0 pieces/alpha/40/bb.png image Over 240,0 0,0 pieces/alpha/40/bn.png image Over 280,0 0,0 pieces/alpha/40/br.png image Over 0,40 0,0 pieces/alpha/40/bp.png image Over 40,40 0,0 pieces/alpha/40/bp.png image Over 80,40 0,0 pieces/alpha/40/bp.png image Over 120,40 0,0 pieces/alpha/40/bp.png image Over 160,40 0,0 pieces/alpha/40/bp.png image Over 200,40 0,0 pieces/alpha/40/bp.png image Over 240,40 0,0 pieces/alpha/40/bp.png image Over 280,40 0,0 pieces/alpha/40/bp.png image Over 0,240 0,0 pieces/alpha/40/wp.png image Over 40,240 0,0 pieces/alpha/40/wp.png image Over 80,240 0,0 pieces/alpha/40/wp.png image Over 120,240 0,0 pieces/alpha/40/wp.png image Over 160,240 0,0 pieces/alpha/40/wp.png image Over 200,240 0,0 pieces/alpha/40/wp.png image Over 240,240 0,0 pieces/alpha/40/wp.png image Over 280,240 0,0 pieces/alpha/40/wp.png image Over 0,280 0,0 pieces/alpha/40/wr.png image Over 40,280 0,0 pieces/alpha/40/wn.png image Over 80,280 0,0 pieces/alpha/40/wb.png image Over 120,280 0,0 pieces/alpha/40/wq.png image Over 160,280 0,0 pieces/alpha/40/wk.png image Over 200,280 0,0 pieces/alpha/40/wb.png image Over 240,280 0,0 pieces/alpha/40/wn.png image Over 280,280 0,0 pieces/alpha/40/wr.png ' -quality 80 -depth 8 -comment "Created by Alexander Maryanovsky's chess diagram generator" +matte +dither -colors 128 png:'cache/e4cadb04f82f4e0ad120a004f5c6636a'
- Create the canvas.
- Draw the board using rectangles (one for each square).
- Draw the pieces from pre-rendered PNG images.
- Specify output options and draw the image.
- N/A
- 25ms.
- 50ms.
- 20ms.
Perhaps I am doing this the wrong way? Could you suggest ways to improve performance?
Thanks,
Alexander (aka Sasha) Maryanovsky.