First this was used to draw a quicker and sharper version of the original project. Now i use this to figure out which input data is best for drawing as fast as possible. Every version is drawn five times, then the average time will be saved. Press the green flag and wait until you see the variables. Timers: 1: Black and White, Pixel by Pixel: This script uses a list with a row for each row of the picture. In each row, there are zeros for white pixels and ones for black pixels. When the script reaches a one, it goes to the position and sets the pen down. When it reaches a zero, it sets the pen up. 2: Black and White, Line by Line: This script uses the same data as the first script, but the pen is not moved pixel by pixel. If a 1 is reached, the pen position will be set to the list position, and the pen will be set down, then the script searches for the next zero and draws a line to the previous position. So the pen will not be moved pixel by pixel but from first to last one in the current block 3. Black and White coordinate list: Here we dont use a list of zeros and ones, but a list of coordinates. In the list will be numbers that represent x and y coordinates and the pen draws from one coordinate to another. Surprisingly this is much faster than the other two scripts. My computer can draw the whole logo in one single screen refresh. 4. Color bitmap dump: I took the original picture, converted it into a bitmap file and used a hex-editor to show the hex values of the file. Then I copied them into a list. This script skips the header of the bitmap file and starts reading blocks of 6 letters. After that, the blue and red values must be switched (in the bitmap, the colors are ordered bgr. Scratch uses the order argb). Then every pixel is drawn. This script is pretty slow because of the string operations (only delete the "switch r<->b" block to see that it runs twice as fast, but the colors are wrong) 5: Color Hex list: You have noticed the "Building hex lists. Please wait". This puts the colors of the bitmap dump in a list. The rendering script can then just count through the list and set the pen color to Join("0x", ListItem). 6: Color 0x hex list: This uses a hex list where the "0x" is already in the list data. So you can set the pen color to the current list item without joining. This is slightly faster than using the join function 7: Color numbers list: Here we don't store the numbers in hex format, but in decimal format. It makes almost no difference to the previous format.
Thanks to eMainc 2013 for the idea. Update 07.02.2017: Show a progression bar for building hex lists. Draw bitmap dump only once. Followed the suggestion of TheLogFather and built a slightly different loop for the color logos. Update 01.02.2017: Used the data for some speed checks. Update 31.01.2017: Added a coloured version. Now mine is not that fast anymore.