Question about checking download speed

I write a program to check my card’s download speed(use “glReadPixels()” to transfor data

from GPU to CPU),I found the time of readout a 720x576 size image(GL_BGRA_EXT format) is

about 5ms,but the time of readout a 360x576 is about 3ms-4ms.It is strange,I think the time

should be about 2.5ms,because the width is half.But what let me surprise is I found the

time of readout a 360*288 size image is about 2.5ms,it seems that only when the width &

height are all shorten half,then the readout time shorten half.Is it right in most card(ATI

or NVIDIA)?Is it the GPU’s hardware feature,or the driver’s bug?

My display card is NV GF6600GT+81.98 Driver.

Assuming a linear memory layout in the RAM, reading longer scanlines impose less overhead than shorter ones at the same amount of data.
This has ever been this way.
Shorter scanlines means the overhead changing from scanline to scanline is increasing with decreasing amount of data.

You will find this document interesting:
http://developer.nvidia.com/object/fast_texture_transfers.html