2016-01-22 3 views
0

Я разрабатываю и внедряю систему управления собственностью, и у меня есть панель инструментов, которая содержит заказы на номера для определенных интервалов дат.Параллельные запросы ajax или sql-запросы? [аспект производительности]

Что я прошу, связано с производительностью [информация о загрузочных комнатах]. В настоящее время у меня есть

for (var r = 0; r < rooms.length; r++) 
    { 
     $.ajax({ 
     type: 'POST', 
     url: '/dashboard/getAllOrders.php', 
     data: 'room_id=' + encodeURIComponent(rooms[r].id), 
     complete: function (e, xhr, settings) { 
      if (e.status === 200) 
      { 
       var orders = $.parseJSON(e.responseText); 
       for (var i = 0; i < orders.length; i++) 
       { 
        drawOrder(orders[i]); 
       } 
      } 
     } 
     }); 
    } 

Но я тоже могу написать:

var room_ids = []; 
    for (var r = 0; r < rooms.length; r++) 
    { 
     room_ids.push(rooms[r].id); 
    } 

    $.ajax({ 
    type: 'POST', 
    url: '/dashboard/getAllRoomsOrders.php', 
    data: { 'room_ids' : room_ids }, 
    complete: function(event, request, settings) 
    { 
     if (event.status === 200) 
     { 

      var orders = $.parseJSON(event.responseText); 
      for (var i = 0; i < orders.length; i++) 
      { 
       drawOrder(orders[i]); 
      } 
     } 
    } 
    }); 

Не могли бы вы порекомендовать мне, какой вариант мне нужно придерживаться и предоставить аргументы, которые будут доказать, почему один вариант лучше, чем другие, с точки зрения производительности?

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

+1

Во-вторых, гораздо лучше, если вы сделаете правильную вещь и объедините ее в один запрос sql на заднем конце. меньше сетевого трафика, меньше отправленных запросов db и т. д., не уверен, что это даже вопрос. –

+0

Глядя на это по-другому, Допустим, вам нужно молоко и хлеб из магазина. Что быстрее/эффективнее? Отправка одного человека в один автомобиль, чтобы получить оба сразу, или отправить двух человек в две разные машины, чтобы получить его? Разница будет небольшой, всего за 2 пункта, но у нее явно будут проблемы с пропускной способностью, если вам нужно 50 предметов. –

+0

Я почти согласен с тобой. Но нам нужны 50 автомобилей, а не один, верно? Он будет потреблять больше памяти, которая должна быть выделена, а выделение памяти рядом с ней ест ресурсы, также требуется время для распределения, нет? в C++ динамическая память медленнее, чем автостатическая память. Хорошо, возможно, я постараюсь сделать некоторые тесты, чтобы узнать, какой вариант быстрее. –

ответ

0

Вы можете видеть мало различий для очень малых объемов данных, однако по мере увеличения количества номеров, вы начнете видеть, что первый подход занимает больше времени, чем второй, в основном из-за полосы пропускания.

Объединив все эти запросы в один запрос, вы уменьшаете объем сетевого трафика между клиентом и веб-сервером, а также веб-сервером и сервером db, поскольку в обоих случаях объединение запроса устраняет необходимость повторной отправки заголовка данных и sql-запросов и вместо этого отправляет их один раз, таким образом уменьшая сетевой трафик и поиск db.

Смежные вопросы