Насколько быстро работает parseFloat Vs. плавать в JavaScript? - PullRequest
1 голос
/ 18 июля 2011

Я получаю огромный набор данных из внутреннего API клиента. Он будет содержать кучу числовых данных о ценах, таких как: $ 31,23. Он дает их мне как {"spend":"21.23"}, что хорошо, но я был обеспокоен тем, что после 1000+ элементов и выполнения parseFloat() для всех этих значений (помимо их графического отображения) в браузере клиента может быть много ресурсов. *

Кто-нибудь делал это?

== Обновление ==

Извините. Мой вопрос был слишком расплывчатым. Меня беспокоило, что это строка, и я ее анализирую. Моя проблема была в parseFloat быстрее, чем просто int. То есть добавляет parseFloat("12.12") к div быстрее, чем просто добавление 12.12, и если да, то насколько быстрее.

Ответы [ 4 ]

7 голосов
/ 18 июля 2011

На моей рабочей машине (Mac OS X, Intel 2 ГГц Core i7) я увидел следующие результаты на jsperf.com :

Browser    | parseFloat calls per second
----------------------------------------
Chrome 12  | 5.3 million
Firefox 6  | 21.7 million
IE 8       | 666.9 thousand <- totally unfair, ran on virtual machine
Opera 11   | 5.2 million

Это далеко не исчерпывающийопрос;но при грубых минимальных из более 600 тысяч вызовов в секунду (и , что на виртуальной машине), я думаю, что вы должны быть хорошими.

0 голосов
/ 18 июля 2015

В отношении скорости parseFloat или parseInt MDN рекомендует вместо этого использовать унарный оператор + , как в

+"12.12"
=> 12.12    

MDN Link

Унарный оператор плюс предшествует своему операнду и вычисляет его операнд, но пытается преобразовать его в число, если это еще не сделано.Хотя унарное отрицание (-) также может преобразовывать не числа, унарный плюс - это самый быстрый и предпочтительный способ преобразования чего-либо в число, поскольку он не выполняет никаких других операций над числом.

0 голосов
/ 18 июля 2011

Тип

javascript: a = + новая дата; х = 100000; while (--x) parseFloat ("21.23"); оповещение (+ новая дата - а);

В ваш URL-бар.

Это единственный способ узнать наверняка.

Честно говоря, вы не можете ответить на вопрос. Это зависит от браузера, например, Firefox 8 должен быть быстрее, чем 6, и т. Д.

0 голосов
/ 18 июля 2011

вы знаете, что parseFloat() основано на браузере. Так что, насколько я знаю, браузер мог аварийно завершить работу после 200 значений, он мог нормально работать после значения 10.000.

Это зависит от того, сколько вкладок в браузере, какие другие скрипты запущены, сколько ЦП свободно для обработки и, конечно, какой браузер

Если ваш клиент использует Firefox с 1000 аддонов, он никогда не будет запускать ваш скрипт без ошибок.

только мое мнение. Если вы хотите сделать это хорошо, вы должны предварительно обработать на сервере, а затем отобразить.

...