CLR/H in Tokyo 第3回 #clrhtky3

2014/06/28 に行われたCLR/H in Tokyo 第3回 #clrhtky3 のツイートまとめです。
1
前へ 1 ・・ 4 5 7 次へ
丸太/Takayuki MARUYAMA @maruTA_bis5

.NETのマーシャリング marshal by ref 参照を渡すがメモリ領域を触らせず、メソッド越しにしか操作できない marshal by value 値をシリアライズして相手側に渡す。既定ではBinarySerializerを使用 #clrhtky3

2014-06-28 16:02:08
丸太/Takayuki MARUYAMA @maruTA_bis5

文字列はマーシャリングでは特殊扱い。文字列はimmutableかつrange-check付きなので、参照を渡しても安全。 #clrhtky3

2014-06-28 16:03:27
Tadahiro Ishisaka🖖 @ishisaka

COMでマーシャリングされるのはDCOMとアウトプロセスサーバの場合、(補足 #clrhtky3

2014-06-28 16:06:00
のはこさん @m0n0_san

1タスクの裏切りが、全体をフリーズさせる #clrhtky3

2014-06-28 16:13:31
丸太/Takayuki MARUYAMA @maruTA_bis5

Threadは高コスト。スレッドプール(.NET4~ならTask)を使う方がCPU効率は良い。 #clrhtky3

2014-06-28 16:18:37
丸太/Takayuki MARUYAMA @maruTA_bis5

CPU-bound <<<<< (越えられない壁) <<<<< I/O-bound #clrhtky3

2014-06-28 16:20:28
丸太/Takayuki MARUYAMA @maruTA_bis5

I/O処理待ちをI/O完了ポートに登録してスレッドを解放、I/O完了のコールバック処理を別のタスクとして実行すると性能が良い。 I/O用の非同期メソッドがたいてい用意されている。(.NETならAsyncがついている名前のメソッド) #clrhtky3

2014-06-28 16:22:44
丸太/Takayuki MARUYAMA @maruTA_bis5

2時間目はメタデータ ・動的リンク ・JIT ・PCL ・・・この辺あんまりわからん #clrhtky3

2014-06-28 16:28:31
丸太/Takayuki MARUYAMA @maruTA_bis5

メタデータ:実行可能ファイル(バイトコードとかもっと低次元なコード)んいは本来不要なデータ。プロパティ名など。 プログラムを作るために必要なデータ。実行よりもメタ(高次)なデータ。 #clrhtky3

2014-06-28 16:30:07
丸太/Takayuki MARUYAMA @maruTA_bis5

.NETでは実行可能ファイルにメタデータ(≒型情報)を残す。 DLLにメタデータを残すことで、プログラミング言語をまたいだり、DynamicLinkに便利 COMの時代は自分で書く必要があった #clrhtky3

2014-06-28 16:31:50
Tadahiro Ishisaka🖖 @ishisaka

まぁC++/CXのメタデータもTLBコンパイラで作成するので、実際はtlbの親戚だけどなー。 #clrhtky3

2014-06-28 16:33:10
丸太/Takayuki MARUYAMA @maruTA_bis5

ASP.NET vNEXTでは、ライブラリ自体は同梱せずにアプリをサーバーにデプロイ、サーバーがパッケージリポジトリから必要なライブラリを取得するパッケージ管理の仕組みが提供されるそうな。この辺の情報を時間とって追いたいな #clrhtky3

2014-06-28 16:38:42
丸太/Takayuki MARUYAMA @maruTA_bis5

中間言語を作る-> 高級言語のパーサ作る人とCPU毎の最適化する人の分業が進む。JITでなくてもLLVMでも中間言語を介してコンパイルする。 中間言語の方がセキュリティチェックしやすいという理由も。 #clrhtky3

2014-06-28 16:43:36
丸太/Takayuki MARUYAMA @maruTA_bis5

中間言語では型やフィールドの情報が残っている。JITコンパイルするとフィールド名が数字(メモリレイアウト上の位置を示す)に。(続 #clrhtky3

2014-06-28 16:48:43
丸太/Takayuki MARUYAMA @maruTA_bis5

フィールドの順序変更など些細な変更があると、ILでは名前で参照するので影響はないが、JITコンパイル結果のメモリレイアウトが変わってしまうので再コンパイルが必要 #clrhtky3

2014-06-28 16:48:50
丸太/Takayuki MARUYAMA @maruTA_bis5

Ngen(Native Image Generator): ILを事前にネイティブ化するツール。インストール時にネイティブコードを作る。昔の.NET Frameworkのインストール時間が長かったのはこれのせい #clrhtky3

2014-06-28 16:51:12
丸太/Takayuki MARUYAMA @maruTA_bis5

MDIL: レイアウト情報だけ型情報を残しておき、ほとんどネイティブコードにコンパイルする。Windows Phone アプリはこの形式でストアサーバーから配布。(Compile in the Cloud) 端末上ではほんの少しだけコンパイルすれば良い。 #clrhtky3

2014-06-28 16:53:46
丸太/Takayuki MARUYAMA @maruTA_bis5

JIT以外の選択肢: Ngen, Auto-Ngen, Compile in the Cloud #clrhtky3

2014-06-28 16:54:26
丸太/Takayuki MARUYAMA @maruTA_bis5

リフレクション:自己反映的動作 メタデータを自分で使う #clrhtky3

2014-06-28 16:56:04
丸太/Takayuki MARUYAMA @maruTA_bis5

C# 中でC# を使う方法 ソースコードから: .NET Compiler Service(Roslyn) 構文木から: System.Linq.Expressions ILを直接生成: ILGenerator #clrhtky3

2014-06-28 16:59:07
Tadahiro Ishisaka🖖 @ishisaka

vNextキタ━━━━(゚∀゚)━━━━ッ!! #clrhtky3

2014-06-28 17:00:38
丸太/Takayuki MARUYAMA @maruTA_bis5

JITの利点: 動的リンク・部分更新しやすい、セキュリティ検証が容易 欠点: .NET Frameworkのインストール必須(この時点で影響大)、ネイティブ配布よりは低速、ソースコード配布よりはデバッグ・修正が面倒 利用場面によっては利点が欠点になり得る・・・ #clrhtky3

2014-06-28 17:02:27
前へ 1 ・・ 4 5 7 次へ