VipinKumar Maurya Ответов: 3

Что быстрее Javascript или Jquery?


document.getElementById("abc")

или
$("#abc");


Что будет работать быстрее и почему?
Я много искал, но не нашел ничего убедительного.Пожалуйста, помогите!
Заранее спасибо.

3 Ответов

Рейтинг:
25

CPallini

По здравому смыслу, так как JQuery написано в Javascript- это должно быть медленнее. Конечно, это не означает "заметно" медленнее.


Sergey Alexandrovich Kryukov

5ед.
—СА

CPallini

Спасибо.

Patrice T

+5

CPallini

Спасибо.

Рейтинг:
18

F-ES Sitecore

Почему бы просто не проверить это самостоятельно?

<div id="a">
    <div id="b">
        <div id="c">
            Hello
        </div>
    </div>
</div>

<div id="resulta"></div>
<div id="resultb"></div>

<script type="text/javascript">
    var start = new Date().getTime();

    for (var i=0; i < 1000000; i++)
    {
        var x = document.getElementById('c');
    }
    var end = new Date().getTime() - start;

    document.getElementById('resulta').innerHTML = 'Non jQuery: ' + end;

    start = new Date().getTime();

    for (var i = 0; i < 1000000; i++) {
        var x = $('#c');
    }
    var end = new Date().getTime() - start;

    document.getElementById('resultb').innerHTML = 'jQuery: ' + end;

</script>


jQuery значительно медленнее, что, конечно же, было бы так. jQuery-это не магия, это не новый язык, поддерживаемый браузером, это просто набор функций javascript. Поскольку он предлагает больше функциональности, чем базовый getElementById, он запускает больше кода, поэтому работает медленнее. Функция $() не просто находит элемент, но и создает объект jQuery на основе найденного элемента.


Sergey Alexandrovich Kryukov

5ед.
—СА

Рейтинг:
11

Afzaal Ahmad Zeeshan

Мы не можем воспринимать понятия "медленнее" и "быстрее" только одним исполнением. Это потому, что вы не можете измерить миллисекунды самостоятельно. Вы бы использовали для этого процессор. Установите таймер, выполните инструкцию (по крайней мере!) 10 000 раз, а затем вычислите время, затраченное на одно выполнение.

jQuery работает медленнее, потому что он написан на JavaScript и имеет заметно дополнительную начинку, чтобы убедиться, что код выглядит меньше и лаконичнее. Код, который вы написали,

$('#abc');

Всегда вызывает функцию JavaScript,
document.getElementById('abc');

Но он не будет напрямую переходить к этому вызову документа! Он прежде всего определит, следует ли искать элемент с его идентификатором ('#') или его имя класса ('.'). Используются многие другие паттерны, которые сводят эту линию к той. Теперь, лично я не нахожу jQuery лучше JavaScript, если все, что вам нужно сделать, это, выберите элемент в HTML DOM.

Для меня использование jQuery имело бы смысл только в том случае, если вы выполняете анимацию, выполняете одновременные Ajax-запросы и так далее. Еще одним "хорошим" использованием jQuery было бы использование его в пользовательском интерфейсе, пользовательского интерфейса jQuery [^] например.

Пожалуйста смотрите Ваниль JS[^] веб-сайт для получения дополнительных идей о разнице. У них есть хорошая таблица, обозначающая общее различие между многими фреймворками и самим JavaScript.

Кроме того, как уже упоминалось, вы не можете найти разницу, просто выполнив одну команду. Попробуйте выполнить команду 10 000 раз, а затем увидеть разницу. Тогда вы можете взять время, затраченное на одно исполнение.

Ваш вопрос больше похож на, "Почему язык Си медленнее языка ассемблера?" :-)


0x01AA

Отличная Подробная Информация. Есть 5.

Afzaal Ahmad Zeeshan

Спасибо.

Sergey Alexandrovich Kryukov

5ед.
Я бы изменил фразу на "компилирует вниз". Компилирует что? В этом случае выражение в первой строке просто вызывает document.getElementById. Однако проблема "компиляция против интерпретации" в JavaScript не так проста. Это не примитивная 100% интерпретация. По крайней мере, весь сценарий сначала проверяется на лексическую целостность. Его можно легко обнаружить. Если несколько утверждений сверху верны, они вообще не будут интерпретироваться, если ниже, скажем, скобки несбалансированы...
—СА

Afzaal Ahmad Zeeshan

Спасибо, Сергей.

Вы правы, он гораздо лучше интерпретируется, чем компилируется (если вообще компилируется!). Жизнь в Царстве Си и Си++ заставила меня забыть терминологию на разных языках, так что это моя вина. :-) Изменил его на "переведенный вниз", надеясь, что этого может быть достаточно.

Sergey Alexandrovich Kryukov

Я бы просто использовал более нейтральный термин "звонки"...
—СА

Afzaal Ahmad Zeeshan

Сделать изменения.