Финансовый калькулятор в Javascript работает намного медленнее, чем в Excel - PullRequest
0 голосов
/ 12 января 2009

Я портировал калькулятор пенсий Excel в Javascript В исходном Excel 35 листов, содержащих много рекурсивных вычислений, и все они были преобразованы в Javascript. Javascript работает медленнее (на 1-2 секунды по сравнению с мгновенным в Excel).

Я уже кеширую рекурсивные вычисления, чтобы ускорить процесс и предотвратить переполнение стека в браузере.

Реально ли попытаться сделать Javascript быстрее? Как Excel удается быть настолько эффективным?

Я где-то читал, что Excel только пересчитывает, когда прецеденты ячейки были изменены. Тем не менее, мне кажется, что Excel работает практически мгновенно, независимо от того, сколько данных нужно пересчитать.

Ответы [ 4 ]

6 голосов
/ 12 января 2009

Excel работает быстрее, потому что он на несколько уровней ближе к ЦП - работает с откомпилированным байт-кодом в ОС, а не в браузере с интерпретированным JavaScript.

Я бы сравнил производительность с Google Chrome или FF3, которые имеют новое поколение движков JavaScript, и посмотрел бы, как все улучшается. Смотрите сообщение Джона Ресига: http://ejohn.org/blog/javascript-performance-rundown/.

2 голосов
/ 12 января 2009

JavaScript медленнее любого компилируемого языка, поэтому Excel работает намного быстрее. Я бы использовал профилировщик Firebug , чтобы выяснить, где ваш код тратит большую часть своего времени, и сосредоточиться на его улучшении.

0 голосов
/ 12 января 2009

Как говорили другие люди, JavaScript далеко не так быстр, как скомпилированный язык. В настоящее время между интерпретаторами JavaScript Chrome, Firefox и Webkit существует некоторая гонка вооружений, которая действительно улучшила ситуацию с JavaScript. Тем не менее, он все еще довольно медленный, и если вы используете IE7 (или даже хуже IE6), производительность может быть довольно плачевной.

Возможно, вы захотите взглянуть на некоторые библиотеки JavaScript, которые там есть (лично я предпочитаю jQuery ), чтобы увидеть, есть ли в некоторых из них вспомогательные функции, которыми вы могли бы воспользоваться. Некоторые из наиболее интенсивно используемых библиотек JavaScript, возможно, оптимизировали часть работы, которую вы пытаетесь выполнить. Конечно, JavaScript не будет работать так же быстро, как Excel, но если вы сможете заменить большую часть своей функциональности утилитами, которые были оптимизированы многими разными людьми, вы можете увидеть небольшое увеличение скорости.

0 голосов
/ 12 января 2009

Если вы перенесли формулы Excel в JavaScript, сохранив алгоритмы без изменений, код JavaScript, с которым вы работали, может оказаться не самым идеальным для JavaScript. Рассматривали ли вы вопросы рефакторинга, чтобы воспользоваться мощными языковыми возможностями JavaScript?

Кроме того, вы производите рендеринг (обновление ячеек таблицы и т. Д.) Во время расчетов? Имейте в виду, что некоторые обновления DHTML могут создать большую нагрузку на браузер (эй, вы запускаете это внутри браузера, верно?) Возможно, разделение вычислений и рендеринга может помочь. Сначала вы усердно выполняете все расчеты, а затем делаете презентацию как последний шаг.

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