optimized read with offset and size