Как повысить скорость выполнения кода в Javascript

#javascript #node.js #performance #execution

#javascript #node.js #Производительность #выполнение

Вопрос:

Я новичок в JS, поэтому у меня есть пара вопросов.

  1. В JS, как мы можем рассчитать потребление памяти кодом / code-block и какой блок занимает какое время. Любые статьи / блоги окажут большую помощь.
  2. Приведенный ниже код выполняется успешно, но превышает время выполнения. Как я могу сократить время выполнения кода. Любые советы будут полезны.

Постановка задачи: задан диапазон от L до T. Найдите такие числа, у которых все цифры кратны K.

Ввод для кода:
Первая строка содержит количество тестовых примеров.
Следующие строки содержат целые числа. (Л Т К)

5
5 10 5
20 40 2
300 600 3

 
process.stdin.resume();
process.stdin.setEncoding("utf-8");
var stdin_input = "";

process.stdin.on("data", function (input) {
    stdin_input  = input;                               // Reading input from STDIN
});

process.stdin.on("end", function () {
   main(stdin_input);
});

function main(input) {
    // process.stdout.write("Hi, "   input   ".n");       // Writing output to STDOUT
    input = input.split('n');
    // console.log(input);
    let T = parseInt(input[0]) 1;
    for(var i=1;i<T;i  ){
        let d=input[i].split(' ');
    calc(parseInt( d[0]),parseInt( d[1]),parseInt( d[2]));
    }
}

function calc(T,L,k){
    ar=[];
    for(let i = T;i<=L;i  ){
        if((i>0 amp;amp; i<10)amp;amp; (i%k==0) ){
            ar.push(i);
        } else {
           splitNumber(i,k) ? ar.push(i):''; 
        }
    }
    console.log(ar.length);
}

function splitNumber(num,k)
{
    let bool=false;
     num= splitToDigit(num);
    for(let i =0;i<num.length;i  ){
        if(num[i]%k == 0 ){
            bool=true;
        } else{ return false; }
    }
    return bool;
}

function splitToDigit(n){
  return [...n   ''].map(Number);
}

  

Комментарии:

1. Что касается вашего первого вопроса, посмотрите здесь .

2. Когда вы решаете подобные задачи с кодированием, весь смысл в том, чтобы найти умный алгоритм, которому не нужно перебирать все возможные значения. Если кто-то здесь даст вам ответ, вы ничему не научитесь.

3. Буквально ли вопрос гласил «Найдите такие числа, все цифры которых кратны K»? (что несколько бессмысленно).

4. Этого не произошло. Единственное место, где эта фраза гуглится, — это здесь.

5. @Barmar Я не жду ответа, я хочу получить информацию, чтобы я мог улучшить качество кода.