Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

141
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!