Вопрос по функциям
Скажите пожалуйста использование функций в js не влияет на быстродействие..(например в php на вызов функций затрачивается больше время чем просто следовать условиям)..В js токого нет ? Например создать функцию с условиями для нескольких обработчиков для сокращения кода или лучше условия писать в самих обработчиках?
|
например в php на вызов функций затрачивается больше время чем просто следовать условиям
Имеется ввиду сам вызов или же исполнение? И на сколько больше, что за условия, и что за функции? |
Влияет, но незначительно: современные интерпретаторы JS сами по себе очень быстрые. Лучше выносить.
|
Если не ошибаюсь в php вызов и исполнение медленее 1.5 раза чем просто условия.
Вернусь к моей другой теме..вы Laimas должны помнить мою тему про пост из контента..Так вот..там обработчиков несколько и у них похожи проверки и условия.. Если создать функцию и вынисти в нее похожие условия а из обработчиков вызывать эту функцию.. |
Вот, пожалуйства, сравнение производительности:
function test(func) { console.time(func.name); func(); console.timeEnd(func.name); } function separate() { let results = []; let isPositive = function(number) {return number > 0}; for (let i = 0; i < 1000000; i++) { results.push(isPositive(i)); } console.log(results); } function inline() { let results = []; for (let i = 0; i < 1000000; i++) { results.push(i > 0); } console.log(results); } test(separate); test(inline); Запускать, конечно, надо несколько раз. У меня в FF 37.0.2 в среднем разница в пределах семи процентов в пользу inline (нет, бывают скачки, но как в separate, так и в inline примерно равномерно). |
Например
$('.mod1').click(function() { var url = $(this).attr('href'); $.ajax({ type: 'GET', url: '?ajax=' + url, success: function(data){ $('#content').html(data); } }); if(url != window.location){ window.history.pushState(null, null, url); } return false; }); $('#content').on('click','.rem1',function(){ var url = $(this).attr('href'); $.ajax({ type: 'GET', url: '?ajax=' + url, success: function(data){ $('#content').html(data); } }); return false; }); Сделать допустим так $('.mod1').click(function() { goGo(); if(url != window.location){ window.history.pushState(null, null, url); } return false; }); $('#content').on('click','.rem1',function(){ goGo(); return false; }); function goGo(){ var url = $(this).attr('href'); $.ajax({ type: 'GET', url: '?ajax=' + url, success: function(data){ $('#content').html(data); } }); } |
...ты действительно считаешь, что производительность в обработчике щелчка, еще и отправляющим ajax, действительно имеет хоть какую-то роль?
|
Цитата:
|
Ты действительно считаешь, что единичная задержка в пределах 1/250000 от скорости человеческой реакции имеет хоть какую-то роль? Да там естественная вариация скорости будет в десятки, если не в сотни, раз больше.
console.time("inline"); console.log(1 > 0); console.timeEnd("inline"); console.time("separate"); let isPositive = function(number) {return number > 0}; console.log(isPositive(1)); console.timeEnd("separate"); Вообще, в высокоуровневом программировании чистота кода обычно превыше всего. |
Ну если разница так мала тогда у меня вопрос отпал..
Всем спасибо... Тема закрыта.. |
Часовой пояс GMT +3, время: 06:56. |