Вопрос по функциям
Скажите пожалуйста использование функций в 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, время: 05:52. |