Объективный способ сравнить память / скорость различных шаблонов наследования в JavaScript? - PullRequest
8 голосов
/ 17 февраля 2010

Я часто вижу аргументы между Classical (подделка из какой-то библиотеки), Pseudo-Classical и Prototypal Inheritance, которые упоминают «эффективность». Тем не менее, я никогда не видел данных, подтверждающих подобные вещи. Не говоря уже о «эффективности», когда речь идет о стиле кодирования, оно кажется неоднозначным, а не алгоритмом.

Я бы хотел провести несколько тестов, чтобы "сравнить" некоторые из этих шаблонов и библиотек. Это явно отличается от большинства алгоритмов или тестов отображения, которые я видел в прошлом. Что вы, ребята, считаете важными вещами для тестирования, и каковы наилучшие способы надежного получения этих цифр.

Что я думаю сейчас:

  • Скорость создания экземпляров (Время создания нескольких тысяч объектов используя каждый шаблон с идентичным функциональность)
  • Использование памяти (Единственное, что я могу думать, это посмотреть на мою память в диспетчер задач ... есть ли лучше способ)
  • Скорость доступа к внутренним свойствам и методам (итерация время снова)
  • Скорость копирования (время итерации)
  • Строки кода (рецензирование лучших практик на следующих примерах с счет)

Любые ошибки, дополнения или возражения? Кто-нибудь видел эти данные в другом месте?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 25 февраля 2010

Есть несколько тестов и цифр, связанных с этой записью в блоге .

Также обязательно прочитайте эту статью Джона Резига о точности времени JavaScript и о том, как это влияет на показатели производительности. Если вы не используете JSLitmus в соответствии с рекомендациями Residuum, убедитесь, что вы по-прежнему используете адаптивные циклы тестирования.

Хотя я полностью согласен с замечанием darelf о том, что вам следует протестировать несколько браузеров, вы можете получить подробную информацию об использовании памяти и процессора в Chrome, нажав Shift + Esc.

1 голос
/ 25 февраля 2010

Не уверен, поможет ли это или нет, но проверьте, что dyna trace отлично справляется с заданием чисел.

1 голос
/ 22 февраля 2010

Я не использовал его сам, но JSLitmus выглядит как правильный инструмент для работы. Вот тест различных методов наследования, использующих JSLitmus.

Если вы проверяете строки кода, и размер действительно имеет значение для вашего теста (а размер файлов javascript имеет значение), то вам также следует проверить размер уменьшенных файлов javascript, используя YUI Coompressor .

Что касается тестов использования памяти, у меня нет никакой другой идеи, кроме как посмотреть на диспетчер задач или топ в системах Linux или эквивалент в Mac OS X (и вы тоже должны это проверить).

Кроме того: Удачи и, пожалуйста, опубликуйте информацию, полученную в результате ваших тестов. И не забудьте включить методы тестирования для воспроизведения значений, чтобы любые другие заинтересованные программисты могли просмотреть ваши результаты.

1 голос
/ 17 февраля 2010

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

...