Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

149
Visualizações
How can we store the instance of a couple of variables once computed forever?

Right now, I have to precompute the floyd warshall cost and path matrix every time my server loads.

This is for a map which is N by N. We only have a couple of maps so I think I should precompute into variables before the server even starts up.

I have 4 variables.

Cost -> Matrix of values.

Path -> Matrix of tuples

TupleVal -> Tuple as a key mapped to a number (Map() object in JS)

IndexVal -> Number as a key mapped to a Tuple (Map() object in JS)'

How can I compute these 4 variables ONCE, and store it somewhere such that it is relatively easy to retrieve? Should this be done through JSON? If so how can I write to a JSON file and read from a JSON file these specific datastructures?

//This is the map I use. A Tuple is converted to a string which maps to number

class ArrayKeyedMap extends Map {
    get(array) {
      return super.get(this.toKey(array));
    }
    
    set(array, value) {
      return super.set(this.toKey(array), value);
    }
    
    has(array) {
      return super.has(this.toKey(array));
    }
    
    delete(array) {
      return super.delete(this.toKey(array));
    }
    
    toKey(array) {
      return JSON.stringify(array);
    }
}

.
.
.
    // This is what I return ForbiddenVals and tupleVal are arraykeyedmap object
    // index is a map object, mapping a number to a tuple. (x,y)
    // path and cost are a 2 dimensional array, which contains numbers. 

    return [path, cost, tupleVal, index, ForbiddenVals]

Above, is basically the data structures I use. What is the easiest way to compute these values ONCE, so I never have to ever again unless I make a change to the maps?

Thank you

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

If you're using Express you can save the JSON to a file with fs

const fs = require('fs');
const path = require('path');

//resolve a relative path to an absolute one
const cacheDir = path.resolve('./json');

//the name of the json file, can be anything in any directory
const jsonFile = `${cacheDir}/json/n_x_n.map.json`;
let data;

//create the cache directories if they don't exist
if(!fs.existsSync(`${cacheDir}/json`)) {
  fs.mkdirSync(`${cacheDir}/json`, {recursive: true});
}

//if the JSON file does not exist, generate the json and save it to the disk
if(!fs.existsSync(jsonFile)) {
    data = genData(); //this is where you generate hte values once
    fs.writeFile(jsonFile, JSON.stringify(data), (err) => {
        if(err) {
             console.error('Couldn\'t save JSON', err);
        } else {
             console.log('Saved JSON');
        }
    }

} else {
//otherwise load the JSON from the file
    data = JSON.parse(fs.readFileSync(jsonFile));
}

//do whatever with the data

If it is just a website you could use localstorage

//load the data from localStorage
let data = localStorage.getItem('json');

//if there is no data in the localStorage, generate the data and save it
if(!data) {

    data = genData();
    localStorage.setItem('json', data);
}

//do whatever with the data
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda