I'm currently optimising a C++ OpenGL game, and I've noticed something slightly odd about texture loading.
I've got a number of PNG files I load as textures and use as spritesheets; these are generally 512px or 1024px, with one 2048px. I use SOIL (www.lonesock.net/soil.html) to load the PNGs then bind them to a custom OpenGL texture class.
I've put some primitive code in to measure how long it takes to load these PNG files as textures measured in ticks. Generally speaking the load times are:
512px PNG: 100 - 150 ticks 1024px PNG: 400 - 500 ticks 2048px PNG: 1800 - 2000 ticks
Now I recognise that not all image files are created equally, but these don't quite seem to add up with what I understand in terms of texture files. There's not much to be gained by using fewer larger textures compared to more smaller textures, and often there's no gain for that 2048px PNG compared to four 1024px.
My question is, are these (relative) load times normal? Is there something I'm missing when it comes to loading textures with SOIL?
Note that my question isn't 'how can I generically speed up image loading times' (I may at a later date convert these to more OpenGL friendly file formats like DDS), but more is there a pattern I should / shouldn't be using to optimise this?