サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
nothingcosmos.blog52.fc2.com
Googleで研究開発していたTCPの新しい輻輳制御アルゴリズムであるBBRが公開され、 Linux kernel向けにパッチが投下されたようです。 こういうのワクワクしますね。 https://patchwork.ozlabs.org/patch/671069/ BBRというキーワードは、QUICの公開当初から、 Google内部で研究開発している輻輳制御アルゴリムズとしてごく一部で知られていました。 ※今回のBBRとQUICで実験中のBBRは別ものという可能性がありますが。。 ファイル:src\net\quic\core\crypto\crypto_protocol.h const QuicTag kTBBR = TAG('T', 'B', 'B', 'R'); // Reduced Buffer Bloat TCP // Defines for all types of conges
Author:nothingcosmos(坂頂佑樹) IT系、特にVMに関して 周辺技術の紹介等をしています。 コメント・質問はお気軽にどうぞ。 LLVM wiki twitter:nothingcosmos
5.0がリリースされたのでARTのGCについて調べていたのですが情報がなくて困ってました。 5.0からはオブジェクトの使い捨てをあまり気にせず使って良さそうですね。 詳しい解説ありがとうございます。
(1) 最近の様子(Dart VM) linuxでARM Android向けにクロスビルドできるようになりました。 クロスビルドしたバイナリをadbでpushすれば動きます。 性能に関しては、JITコンパイラへの最適化追加が一段落していて、 安定している。 Computer language benchmark gamesを参照すると、 SingleThreadingでは、goと等速くらい。Javaの20%~50%遅いくらい。 ioが絡むと遅くなるので注意。 (2) vm-service stacktrace vm起動時に--enable-vm-serviceオプションを追加すると、 デフォルト8181ポートでsocketを開きます。 ブラウザからlocalhost:8181でアクセスすると、 vmにattachしてstacktraceやprofileや各種統計が参照できます。 裏のpng
> 例に出ているfactがすべて末尾再帰でない気ががが。 ありがとうございます。そのとおりですね、末尾再帰の除去っていう日本語が誤解を招くのかも。。 Cコンパイラの末尾再帰の除去(Tail Recursion Elimination)は、 厳密な末尾再帰を対象にしてループに変換するのではなく、 再帰呼出をループに変換しようといろいろがんばるっぽいです。 JVMで同等のことをやろうとすると障害が多いのですが、 JVMで末尾再帰だけ対象にした場合も考えてみようと思います。
某会場のLT(5min)において、Dart VMの普及を願い紹介させていただきました。 煽りの入ったLTですが、以下の理由から作成することにしました。 Dart VMを開発しているGoogleのVMチームは、 古くはSunでSelf Hotspot OOVM V8 Dart VMと開発してきた経緯からすると、 HotspotやV8は当時の目標や技術的な課題、制約等あったわけで、 単純に速い遅いと比較するわけにもいかないはずです。 またDart VMもV8も同じ会社で開発している関係上、パフォーマンスがでない理由は百も承知なはずですし、 表立ってdisりにくいのかなと思ったわけです。 私みたいなDart VM WatcherがV8を一人disるくらい問題ないよね、と。 ちょっと補足説明させていただきますと、 Dart VMはia32に限っていうと、各種マイクロベンチマークではよい成績ですし、
getの際はtype feedbackの結果を参照し、getした際に何の型か確認処理を除去しています。 また、getした値がSmi型の場合、dynamicのポインタに31bit値が埋め込まれています。 GCでもtype feedbackの結果を参照してwrite barrierをスキップしています。 ただし、最初のsetでint、次のsetでdoubleを格納することも可能です。 その場合こうなります。 class descriptor D 0:x:dynamic (dynamic) <-- 2種以上はdynamicとする。 32:y:dynamic (Double) 64:z:dynamic (Smi) またxがSmi型を前提としてJITコンパイルしていたコードを、すべて捨てます。(Deoptimization) そして、xが何の型でも動くbase line compilerが生成し
ベンチマークのソースコードは、 http://bit.ly/pNNmGY で公開されているようです。 疑問に思ったポイントは、javascriptの文字列連結が速すぎることですね。。 buf+=s+s+s 0.066 私の環境で測定してみたところ、0.022でした。 比較して、C++で0.450、Java7で0.350です。 該当のコード
gdb.Command.__init__ (self, "test_events", gdb.COMMAND_STACK)
vmやjavascript-engineの概要や歴史に関して説明しているスライドです。 その中で、old javascript engineはstack-baseを採用し、 modern javascript engineは、register-baseの中間表現を採用しているという下りがあります。 javascriptに限らないですが、確かにそういう感じはあります。 JVMやCILがstack-baseなのは歴史的な経緯なのだと思います。 stack-baseだと何が嬉しいのかというと、parseする際や、他にtranslateする際に、非常に楽です。 push-pop-push-popだけでオペランドや定義値の連鎖を表現できるので、 非常にシンプルなコードになります。 逆にregister-baseだと何がうれしいのかと言うと、たぶんSSA形式が関連しているように思います。 regist
風の噂でDeepLearningのモデルをコンパイルして低レイテンシかつ実行時環境に依存しない形で実行できると聞いていましたが、なんかTensorflowでその辺のモジュールが公開されたそうです。素晴らしい!https://www.tensorflow.org/versions/master/experimental/どういうことだってばよ!?よくわかんないけど、TensorFlowのModelを構成する下記のOperationを逐次バイナリに変換するAOTコンパラであるtfcompileってツールが提供され... 続きを読む --お知らせ--技術書典で販売し、現在Boothで販売しているSwift Internal Introducesですが、公開に利用していたDropbox Publicフォルダが2017/03/15にサービス停止になるため、Google Driveへ移行しました。既存
このページを最初にブックマークしてみませんか?
『LLVMとコンパイラとVM』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く