Как мне рассчитать код JavaScript? - PullRequest
0 голосов
/ 11 января 2012

Мой процессор работает на частоте 2,0 ГГц.

У меня на новом компьютере удалено столько программного обеспечения, сколько возможно, кроме инструментов разработки. Эта система не содержит вредоносных программ.

Когда я запускаю приведенный ниже код, я получаю около 2M циклов в секунду. Это около 1 МГц.

Предположим, что выполнение и сложение, а сравнение - в 10 раз проще, я получаю около 10 МГц

Почему я не получаю больше загрузки моего процессора?

var Utility = 
{
    time: function() 
    {
        var end_time,
            start_time,
            index = 0;

        start_time = new Date().getTime();

        while ( index <= 1000000 )
        {
            index++;
        }

        end_time = new Date().getTime();

    return ( end_time - start_time);
    }
};

Ответы [ 3 ]

4 голосов
/ 11 января 2012

Предположим, вы делаете и сложение, читаете часы и сравниваете 100x простейшая операция (очень консервативная), я получаю (.1MHz * 100) = 1МГц.

Это не , как работают компьютеры, и измерение скорости, как это, никуда вас не приведет. Кроме того, это во многом зависит от используемого движка JavaScript. Я слышал много хорошего о двигателе V8 JS, который использует Chrome, Opera, кажется, тоже довольно быстрая.

Так что попробуйте с разными браузерами, чтобы получить реальное сравнение. Но если вы хотите измерить, сколько времени потребовалось для выполнения какой-либо операции (псевдокод):

var start = get_current_time(); 
// do the complex operation
var end = get_current_time ();

var time_it_took = end - start;

Функции времени должны иметь как можно меньшую гранулярность.

4 голосов
/ 11 января 2012

Это не совсем о JavaScript - это больше о браузере и о том, как он обрабатывает JavaScript.

Каждый браузер делает это по-своему, но большинство современных браузеров не позволяют JavaScript использовать 100% ресурсов для предотвращения сбоя клиентского компьютера.

Суть в том, что вы не можете делать такие вещи со сценариями на стороне клиента, вам придется использовать «настоящее» приложение с полным доступом к компьютеру.

2 голосов
/ 11 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...