Есть ли хорошие учебники о том, как быстро писать эффективный код для v8 (в частности, для node.js)?
Какие структуры следует избегать использовать? Каковы идиомы, которые хорошо оптимизируют v8?
Есть ли хорошие учебники о том, как быстро писать эффективный код для v8 (в частности, для node.js)?
Какие структуры следует избегать использовать? Каковы идиомы, которые хорошо оптимизируют v8?
Из моего опыта:
.bind()
на самом деле медленнее в V8 в данный моментnew Object()
и new Array()
в данный момент немного быстрее (MICROoptimization, если вы не пишете сумасшедший кодер с {}
и []
)Мои правила:
Если вы эксперт JS и уже применяете все хорошие практики к своему коду, вряд ли что-нибудь вы можете сделать для повышения производительности.
Если вы столкнулись с проблемами производительности:
Документы дают отличный ответ: http://code.google.com/apis/v8/design.html
Понимание V8 - это набор слайдов из nodecamp.eu и дает очень интересные советы. В частности, я нашел заметки о том, что полезно избегать "словарного режима", т.е. Помогает, если вы сохраняете "фигуру" объектов постоянными и не добавляете к ним произвольные свойства.
Вы также должны запустить node с помощью --crankshaft --trace-opt --trace-bailout
(--crankshaft
требуется только на 64-разрядных платформах, например OS X), чтобы узнать, "Vailing" для V8 "Jailing" на JIT для определенных функций. Существует тонна других параметров трассировки, включая --trace-gc
и различные другие трассировки GC, которые могут быть полезны для оптимизации.
Сообщите мне, есть ли у вас какие-либо конкретные вопросы о слайдах выше, поскольку они немного кратки.:-) Они не мои, но я провел некоторое исследование в областях, которые они покрывают.