Есть ли хорошие учебники о том, как быстро писать эффективный код для v8 (в частности, для node.js)?Сжатие производительности из v8
Какие структуры следует избегать использовать? Каковы идиомы, которые оптимизируют v8?
Есть ли хорошие учебники о том, как быстро писать эффективный код для v8 (в частности, для node.js)?Сжатие производительности из v8
Какие структуры следует избегать использовать? Каковы идиомы, которые оптимизируют v8?
Из моего опыта:
.bind()
является действительно медленно V8 на данный моментnew Object()
и new Array()
немного быстрее, в настоящее время (MICROoptimization, если вы не пишете какой-то сумасшедший кодер палку с {}
и []
)Мои правила:
Если вы эксперт JS и ваш уже применяет все good practices в код, есть вряд ли все, что вы можете сделать для повышения производительности.
При возникновении проблем с производительностью:
Спасибо - Javascript Garden выглядит потрясающе :) – nornagon
Это старое сообщение, но я недавно наткнулся на какое-то хорошее видео (от Google IO 2012) о точной вещи. Он был опубликован в 2012 году, поэтому все немного изменилось, но я думаю, что не так много: http://youtu.be/UJPdhx5zTaw – Pijusn
Документы дают большой ответ: http://code.google.com/apis/v8/design.html
Документов недостаточно. например: делает ли v8 встраивание? Как дорого стоит вызов функции? Насколько дорого стоит создание объекта? Я хочу знать, как умный v8 находится в самых разных случаях, а не только в доступе к ресурсам. – nornagon
Understanding V8 представляет собой набор слайдов из decamp.eu и дает очень интересные советы. В частности, я нашел заметки о том, что полезно избегать «режима словаря», то есть помогает, если вы сохраняете «фигуру» объектов постоянными и не добавляете к ним произвольные свойства.
Вы также должны запустить узел с --crankshaft --trace-opt --trace-bailout
(--crankshaft
необходим только на 64-разрядных платформах, например OS X), чтобы увидеть, «V8» «поручился» при JIT определенных функциях. Существует тонна других параметров трассировки, включая --trace-gc
и различные другие трассировки GC, которые могут быть полезны для оптимизации.
Дайте мне знать, если у вас есть какие-либо конкретные вопросы о слайдах выше, поскольку они немного кратки. :-) Они не мои, но я провел некоторое исследование в областях, которые они покрывают.
Просто интересно, но почему вы спрашиваете? Разве вы не должны больше беспокоиться о вытеснении производительности из самых медленных (но широко используемых) двигателей рендеринга, чем самый быстрый? Кажется, самый быстрый позаботится о себе. – mVChr
Я просто хочу знать, что V8 не нравится. Мне нужен эффективный код. – nornagon
Хороший ответ nornagon - его невероятно расстраивает, когда вопрос игнорируется, а ответы не связаны. Меня тоже интересует просто ради интересов! –