[gdal-dev] How to improve the performance of VectorTranslate with VSIMEM in C++

MRRAJESH rajeshreddy82 at gmail.com
Sun Jul 26 14:53:55 PDT 2020


Developers,

Code is written in C++. It is taking time (say 30 sec to 1 min) for each mvt
file. how to improve the performance.

Objective is to get the <service>/<zoom Level>/<Column>/<Row>.mvt file. Here
each call is a thread.

We are passing the VRT file as input. Output is vsimem. Options are -
{"-dsco", "TILE_EXTENSION=mvt","-dsco", "COMPRESS=NO", "-dsco",
"MINZOOM=zoom level",  "-dsco", "MAXZOOM=zoom level"}

Once we have multiple files in vsimem, opening the specific mvt file
(example - "/vsimem/mvt-<GUID>/18/66027/96262.mvt") and returning to client
with below
code -

VSILFILE* fp = VSIFOpenL(vsiMemFilename.c_str(), "rb");
                VSIFSeekL(fp, 0, SEEK_END);
                size_t nSize = (size_t)VSIFTellL(fp);
                VSIFSeekL(fp, 0, SEEK_SET);
                void* pRefBuf = CPLMalloc(nSize);
                VSIFReadL(pRefBuf, 1, nSize, fp);
                VSIFCloseL(fp);
                *size = nSize;
                return pRefBuf;

Since "VSIFReadL" method is not available in C#, we moved to C++.

Questions:

1. Is above implementation is correct by using GDAL for each thread call?
2. It is taking time (say 30 sec to 1 min) for each thread, how to improve
performance.
3. can we expect "VSIFReadL" in C# libraries in coming releases?


Regards,
Rajesh



--
Sent from: http://osgeo-org.1560.x6.nabble.com/GDAL-Dev-f3742093.html


More information about the gdal-dev mailing list