Thank you, Pablo. Very helpful to have this kind of step by step example
for Go developers.

I have some familiarity in this area and I'd say the practical issues in
large-scale, high-throughput operation tend to relate to the native
filesystem. Too many small files overwhelm them and can make directory
lookups slow. Too many directory levels leads to slow filesystem traversal.
Sometimes it can help to dice the big image into small independent tiles
and store those tiles as a mosaic in one's own file type. This is the
nature of TILED vs ROW storage in the TIFF format. The next level of tuning
is about leverage the operating system's cache of data read from disk in a
productive way. You can have our own cache in RAM, of course, but the OS
likely has that same data cached. There are cases where memory mapping the
small tile files does what you would want.

There are also dynamic considerations. It may well be that a client
accessing tile [i][j] will soon want one of the eight surrounding tiles.
over time, it may be that a direction of browsing through tile-space can be
established and this can encourage read-ahead, though the benefit is not
always assured; maybe the accesses are structured and maybe they are not.

Some high-throughput servers in the era of smart web clients (aka Google
Maps / leaflet ./ etc.) refuse to build custom images and only supply tiles
in response to a request--leaving tile assembly to the client.

Just some thoughts. None of them would help make what you've done any
clearer or more helpful to the reader.

Best,
Michael


On Tue, Dec 19, 2017 at 3:37 PM, Pablo Rozas Larraondo <
p.rozas.larrao...@gmail.com> wrote:

> Thank you Thomas for the link to the vips library. I didn't know about it
> and now I want to read more about its design and internals.
>
> The objective of the article was to set a baseline using the Go image
> library and play with several factors to see how it affects performance. In
> this first article, I wasn't really trying to come up with the fastest
> possible image server but to point a few basic techniques that can improve
> access speed and reduce memory consumption. These techniques should be
> applicable to any image library, so similar relative performance gains can
> be achieved with any language or library.
>
> The next part, which I'm currently writing, proposes the snappy
> compression as a way of improving access speed to the data.
>
> Cheers,
> Pablo
>
> On Tuesday, December 19, 2017 at 10:28:48 AM UTC+1, Thomas Bruyelle wrote:
>>
>> Interesting and nice pieces of code. I wonder if the performances can be
>> compared to something like `vips` (https://jcupitt.github.io/libvips).
>>
>> Le lundi 18 décembre 2017 22:51:49 UTC+1, Pablo Rozas Larraondo a écrit :
>>>
>>> Hi,
>>>
>>> For those interested on serving or using satellite imagery, I've just
>>> published the first of a three part series on this subject using Go:
>>>
>>> https://medium.com/@p.rozas.larraondo/divide-compress-and-co
>>> nquer-building-an-earth-data-server-in-go-part-1-d82eee2eceb1
>>>
>>> Any feedback or comment that you might have would be greatly appreciated!
>>>
>>> Thanks,
>>> Pablo
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Michael T. Jones
michael.jo...@gmail.com

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to