Шаблон JDBC работает медленно

Я думаю, что важно понять, что lodash работает точно так, как ожидалось в вашем примере. Проблема в том, что вы flatMap(f=>f.child_array) сказали lodash, чтобы взять child_array и вернуть его в следующую операцию цепочки. Затем он сделал так, как ожидалось, чтобы удалить дочерний элемент, который соответствовал идентификатору, а оставшаяся часть - дочерняя коллекция, запрошенная вами по возврату из flatMap.

Кажется, что вы действительно хотите, это карта через fathers удалить дочерний элемент, который совпадает с идентификатором, а затем вернуть the father.

Например, это сделало бы это:

var data = [
{
      "father_id": 1,
      "name": "father 1",
      "child_array": [
        {
          "child_id": 11,
          "name": "father 1 child 1"
        },
        {
          "child_id": 12,
          "name": "father 1 child 2"
        }
      ]
    },
    {
      "father_id": 2,
      "name": "father 2",
      "child_array": [
        {
          "child_id": 21,
          "name": "father 2 child 1"
        },
        {
          "child_id": 22,
          "name": "father 2 child 2 - TO DELETE"
        }
      ]
    }  
]

removeById = (id, data) => _.map(data, father => {
  father.child_array = _.reject(father.child_array, { child_id: id })
  return father
})

console.log(removeById(22, data)) // 2 fathers with 2nd child removed from 2nd father
console.log(removeById(11, data)) // 2 fathers with 1 child each now
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

2
задан Berkin 19 January 2019 в 19:10
поделиться

1 ответ

Есть несколько вещей, которые вы можете сделать для улучшения производительности:

  1. Вместо использования DriverManagerDataSource определите пул соединений с фиксированным числом соединений. Для упрощения используйте SingleConnectionDataSource, который не будет выполнять какую-либо проверку соединения по займу. Это не заводская настройка, но в вашем тесте будет меньше движущихся частей.
  2. Вместо SELECT * укажите только те столбцы, которые вам нужны. Разрешение * может отличаться для JDBC и клиента командной строки, лучше всего удалить это неизвестное.
  3. Используйте подготовленные операторы с client_no = ? вместо client_no=" + clientNo конкатенации. Это приведет к улучшению кэширования плана запросов при проверке различных номеров клиентов.

Обратите внимание, что JVM требует более 10 000 вызовов метода для запуска JIT-компиляции и оптимизации. Если у вас есть простой main(), который не нагревает JVM, код будет медленнее. Клиент командной строки уже скомпилирован в собственный код.

0
ответ дан Karol Dowbecki 19 January 2019 в 19:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: