mirror of
https://github.com/felt/tippecanoe.git
synced 2026-10-02 08:25:40 +02:00
Reduce maximum memory used for vertex sorting (#170)
* Add logging for out-of-memory debugging * Use less memory for sub-sorting * Reduce maximum memory used for vertex sorting
This commit is contained in:
@@ -1,3 +1,7 @@
|
|||||||
|
# 2.37.1
|
||||||
|
|
||||||
|
* Reduce maximum memory used for vertex sorting
|
||||||
|
|
||||||
# 2.37.0
|
# 2.37.0
|
||||||
|
|
||||||
* Speed up tile-join overzooming and make it use less memory, by not including empty child tiles in the enumeration
|
* Speed up tile-join overzooming and make it use less memory, by not including empty child tiles in the enumeration
|
||||||
|
|||||||
@@ -2041,7 +2041,7 @@ std::pair<int, metadata> read_input(std::vector<source> &sources, char *fname, i
|
|||||||
vertex_readers.push_back(readers[i].vertexfile);
|
vertex_readers.push_back(readers[i].vertexfile);
|
||||||
rewind(readers[i].vertexfile);
|
rewind(readers[i].vertexfile);
|
||||||
}
|
}
|
||||||
fqsort(vertex_readers, sizeof(vertex), vertexcmp, vertex_out, memsize / 10);
|
fqsort(vertex_readers, sizeof(vertex), vertexcmp, vertex_out, memsize / 20);
|
||||||
|
|
||||||
for (size_t i = 0; i < CPUS; i++) {
|
for (size_t i = 0; i < CPUS; i++) {
|
||||||
if (fclose(readers[i].vertexfile) != 0) {
|
if (fclose(readers[i].vertexfile) != 0) {
|
||||||
@@ -2107,7 +2107,7 @@ std::pair<int, metadata> read_input(std::vector<source> &sources, char *fname, i
|
|||||||
rewind(readers[i].nodefile);
|
rewind(readers[i].nodefile);
|
||||||
}
|
}
|
||||||
|
|
||||||
fqsort(node_readers, sizeof(node), nodecmp, node_out, memsize / 10);
|
fqsort(node_readers, sizeof(node), nodecmp, node_out, memsize / 20);
|
||||||
|
|
||||||
for (size_t i = 0; i < CPUS; i++) {
|
for (size_t i = 0; i < CPUS; i++) {
|
||||||
if (fclose(readers[i].nodefile) != 0) {
|
if (fclose(readers[i].nodefile) != 0) {
|
||||||
|
|||||||
@@ -4,12 +4,16 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#define MAX_MEMORY (10 * 1024 * 1024)
|
#define MAX_MEMORY (1024 * 1024 * 1024) // 1 GB
|
||||||
|
|
||||||
void fqsort(std::vector<FILE *> &inputs, size_t width, int (*cmp)(const void *, const void *), FILE *out, size_t mem) {
|
void fqsort(std::vector<FILE *> &inputs, size_t width, int (*cmp)(const void *, const void *), FILE *out, size_t mem) {
|
||||||
std::string pivot;
|
std::string pivot;
|
||||||
FILE *fp1, *fp2;
|
FILE *fp1, *fp2;
|
||||||
|
|
||||||
|
if (mem > MAX_MEMORY) {
|
||||||
|
mem = MAX_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
// read some elements into memory to choose a pivot from
|
// read some elements into memory to choose a pivot from
|
||||||
//
|
//
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
#ifndef VERSION_HPP
|
#ifndef VERSION_HPP
|
||||||
#define VERSION_HPP
|
#define VERSION_HPP
|
||||||
|
|
||||||
#define VERSION "v2.37.0"
|
#define VERSION "v2.37.1"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user