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

#javascript #jquery

#javascript #jquery

Вопрос:

В моем проекте мне нужно увидеть данные датчиков в окне textarea и через некоторое время сохранить эти данные в текстовом файле. Я использую этот код :

 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
`
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <title>title</title>


  <script type="text/javascript" src="jquery-3.2.1.min.js"></script>

  <script type="text/javascript">
    var updateInterval = 50;
    var updateChart = function(count) {
      count = count || 1;

      Val1 = Math.floor((Math.random() * 100)   1);
      Val2 = Math.floor((Math.random() * 100)   1);
      Val3 = Math.floor((Math.random() * 100)   1);

      $(document).ready(function() {
        var $textarea = $('textarea');
        $textarea.scrollTop($textarea[0].scrollHeight);
      });
      var d = new Date();
      $("#output").append(document.createTextNode(d.getHours()   ":"   d.getMinutes()   ":"   d.getSeconds()   " - , "   Val1   ", "   Val2   ", "   Val3   "n"));
    }
    setInterval(function() {
      updateChart()
    }, updateInterval);

    function download(filename, text) {
      var pom = document.createElement('a');
      pom.setAttribute('href', 'data:text/plain;charset=utf-8,'   encodeURIComponent(text));
      pom.setAttribute('download', filename);

      pom.style.display = 'none';
      document.body.appendChild(pom);

      pom.click();

      document.body.removeChild(pom);

    }
  </script>
</head>

<body>

  <form onsubmit="download(this['name'].value, this['text'].value)">
    Filename: <input type="text" name="name" value="                  .txt">
    <textarea id='output' cols="40" rows="10" name="text" style="border:solid 2px blue;">
  Time  ,Val1, Val2, Val3

</textarea>
    <input type="submit" value="SAVE">
  </form>

</body>

</html>`  

Проблема в том, что скорость выполнения моего кода все медленнее и медленнее, если время
между запуском и сохранением файла проходит больше времени!
Если я использую 20 выборок в секунду, такое замедление неприемлемо.
Возможно ли получить более быстрый код, который намного меньше зависит от времени (размер текстового файла)?

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

1. Вы действительно не хотите добавлять обработчик document ready при каждом вызове updateChart

2. На самом деле вам нужно всего лишь завершить setInterval вызов, т.Е. jQuery(function($) { setInterval(updateChart, updateInterval) })

3. @Phil, да, это помогает, но замедление сохраняется (выполнение в два раза медленнее) для файла скромного размера 200 Кб (или около 20 минут записи данных датчика). Тем не менее, я не понимаю корня проблемы и как найти более эффективный код, чтобы получить возможность записывать данные в течение 1 часа и с минимальным замедлением.