メインコンテンツまでスキップ

「internals」タグの記事が26件件あります

全てのタグを見る

Oilpanにおけるポインタ圧縮

· 約18分
Anton Bikineev および Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz))、ウォーキング逆アセンブラ

4ギガバイト未満のRAMを使用するプログラムをコンパイルする場合に、64ビットのポインタを使用するのは全くもって愚かなことです。このようなポインタの値が構造体内に現れると、メモリの半分を無駄にするだけでなく、キャッシュの半分を効果的に捨てることになります。

Donald Knuth (2008)

Oilpanライブラリ

· 約8分
Anton Bikineev、Omer Katz([@omerktz](https://twitter.com/omerktz))、Michael Lippautz([@mlippautz](https://twitter.com/mlippautz))効率的で効果的なファイル移動者たち

この投稿のタイトルから、オイルパンに関する書籍のコレクションを深掘りするのかと思うかもしれませんが、今回は違います。その代わりに、V8 v9.4以降ライブラリとしてホストされているC++ガベージコレクターであるOilpanについて詳しく見ていきます。

より速いJavaScriptコール

· 約23分
[Victor Gomes](https://twitter.com/VictorBFG)、フレームシュレッダー

JavaScriptでは、期待されるパラメータの数とは異なる引数の数で関数を呼び出すことができます。つまり、宣言された形式パラメータより少ないまたは多い引数を渡すことができます。前者の場合は「アンダーアプリケーション」と呼ばれ、後者は「オーバーアプリケーション」と呼ばれます。

V8におけるスラック追跡

· 約22分
Michael Stanton ([@alpencoder](https://twitter.com/alpencoder))、スラックの達人として知られる人物

スラック追跡は、新しいオブジェクトに実際に使用するサイズよりも大きな初期サイズを与える方法であり、これにより迅速に新しいプロパティを追加できます。そして一定期間後、使われていないスペースをシステムに魔法のように返却します。すごいでしょ?

C++用の高性能ガベージコレクション

· 約14分
Anton Bikineev、Omer Katz([@omerktz](https://twitter.com/omerktz))、およびMichael Lippautz([@mlippautz](https://twitter.com/mlippautz))、C++メモリウィスパラー

これまでに、JavaScript用ガベージコレクション、ドキュメントオブジェクトモデル(DOM)、およびこれらすべてがV8でどのように実装および最適化されているかについて何度か 記述して きました。しかし、ChromiumのすべてがJavaScriptというわけではありません。というのも、V8が組み込まれているブラウザおよびそのBlinkレンダリングエンジンのほとんどがC++で記述されているからです。JavaScriptはレンダリングパイプラインによって処理されるDOMとのインタラクションに使用できます。

V8正規表現の改善

· 約9分
Patrick ThierとAna Peško、正規表現に関する意見を持つ正規表現擁護者

デフォルト設定では、V8は初回実行時に正規表現をネイティブコードにコンパイルします。JITなしのV8の作業の一環として、正規表現用のインタープリターを導入しました。正規表現を解釈することにはメモリ使用量が少ないという利点がありますが、パフォーマンスの低下を伴います。このブログ投稿では、正規表現を解釈する利点を活かしつつ、欠点を軽減する方法を説明します。

ReactにおけるV8の性能の崖についての物語

· 約23分
Benedikt Meurer ([@bmeurer](https://twitter.com/bmeurer)) と Mathias Bynens ([@mathias](https://twitter.com/mathias))

以前に、JavaScriptエンジンがShapesとInline Cachesを使用してオブジェクトと配列のアクセスを最適化する方法や、エンジンがプロトタイプのプロパティアクセスを高速化する仕組みについて詳しく探りました。この記事では、V8がさまざまなJavaScript値に対して最適なメモリ内表現を選択する方法と、それがShapeの仕組みにどのように影響を与えるかについて説明しています。これらすべてはReactコアにおける最近のV8の性能の崖を説明する助けとなります。

2019年のJavaScriptコスト

· 約18分
Addy Osmani([@addyosmani](https://twitter.com/addyosmani))、JavaScriptジャニター、Mathias Bynens([@mathias](https://twitter.com/mathias))、メインスレッド解放者
注記

注意: 記事を読むのではなく、プレゼンテーションを見る方が好きなら、以下の動画をご覧ください!そうでない場合は、動画をスキップして読み進めてください。

“The cost of JavaScript”(Addy Osmaniが#PerfMatters Conference 2019で発表した内容)

JavaScript開発者向けコードキャッシュ

· 約20分
[Leszek Swirski](https://twitter.com/leszekswirski)、キャッシュスマッシャー

コードキャッシュ(_バイトコードキャッシュ_とも呼ばれる)は、ブラウザにおける重要な最適化です。解析とコンパイル結果をキャッシュすることで、頻繁に訪問されるウェブサイトの起動時間を短縮します。多くの人気のある ブラウザが何らかのコードキャッシング機能を実装しており、Chromeも例外ではありません。実際、過去に書かれたことがありますし話すこともありました。また、ChromeとV8がどのようにコンパイル済みコードをキャッシュするかについて説明しています。

JITなしのV8

· 約5分
Jakob Gruber ([@schuay](https://twitter.com/schuay))

V8 v7.4は、実行時に実行可能なメモリを割り当てずにJavaScriptを実行することをサポートします。

デフォルト設定では、V8は実行時に実行可能なメモリを割り当てたり変更したりする機能に大きく依存しています。例えば、TurboFan最適化コンパイラはホットなJavaScript(JS)関数に対してネイティブコードをリアルタイムに生成し、多くのJS正規表現はirregexpエンジンによってネイティブコードにコンパイルされます。実行時に実行可能なメモリを作成することは、V8を高速にする要因の一つです。