1000 images in a frame, it was a bit exaggerating but the game do have lots of non-static images. And I tried to put them in sprite sheets but found out it isn't efficient as there will be like 1k+ different items/tiles/monsters scattered around the map and each has different image, some of the images are big too. So even if I made lots of sprite sheets, there will be a big chance next image will be loaded from different sprite sheet. I'm still looking for a solution.
Thanks again. I actually googled and read that slick could use VERTEX_ARRAY_RENDERER before you reply, and it was your other post in this forum xD I had a good result with the new renderer, think it improved my FPS by 5-15%. Also, using your SpriteBatch class, I did some test showing 2000 same small image(32x32) in a frame. I got 800FPS using slick's image.draw(), and 2400FPS o.o using SpriteBatch. But when I test again by showing 2000 different images(ranging from 32x32 to 512x512), I got 50 FPS with slick.image() and 65 FPS with SpriteBatch. Is it expected?