Unity performance issues

I am working on a 2D game and am suffering under performance issues. It is a tile-based game and I load 2D sprites and graphics into arrays of Color objects. Since unity does not provide canvas functionality, I draw my final result on the GUI. To achieve this, I have one array containing my sprite sheet pixel data, and one for the GUI. I update all of the GUI’s pixels every frame by looping through them, doing some transformations to finally get the corresponding pixel in my sprite sheet Color array.

Now I am aware that this is a lot of processing to do. The code within the inner-most for loop has to execute roughly 640 000 (as there are roughly 620 tiles on screen, and each is 32x32 pixels. I am currently hitting 1.5 to 2 FPS. However, I originally had the game in pure java code, and it executes at roughly 50 FPS.

Is there any performance tips for unity that I can follow or anything I can look out for? Or does it just purely sound as if I am attempting to do too much processing?

By the way, I don’t know if this is the correct way of doing this, but my main script (which is derived from MonoBehaviour) is attached to the camera object in my scene.

Edit:
*I noticed that by removing my rendering function, and simply calling the texture2D SetPixels and Apply function every update, my frame rate is still a measly 7.2FPS. In my java equivalent, by removing the rendering function (the one that updates the pixels), but still copying the array or image to screen, I get a framerate of 500 or more FPS. Which leads me to conclude that my Unity knowledge is seriously lacking.

Generate a mesh for your tiles and use as few meshes as possible by batching your tiles into a single mesh and layout your tile images to be on a single texture if you can.