ブログ 2018/05/03 C# にも型クラス(Shapes)が欲しい… 距離空間上のアルゴリズム実装 今日は C# で「距離の計算」を汎用的に、かつ、高パフォーマンスでやりたいという話。 というか、やりたいのはやまやまなんだけど、高パフォーマンスを目指すとなかなか大変なことになるという話。 Shapesが来れば楽になるはずだけども、計画上だいぶ先の話なので、待っていると厳しいので大変なのを我慢したという話でもあります。 サンプル コードの全体像: MetricSpace 距離 2つの何らかの情報の距離を求めたいことは結構あります。 近いもの同士でグルーピングしたい 最短経路を求… 続きを読む 2018/04/04 ピックアップRoslyn 4/4 C# 8.0辺りの検討事項 Design Notes の一斉アップロード祭りがらみ、今日でやっと最後。 先月28日に1つ追加の Note もあります。 とりあえずこれまでの分: C# 8.0よりさらに先を見越して、いくつかの機能の採用が決定 一番分量が多かった Ranges (C# 8.0 予定)の話 C# 7.3 で入りそうな機能の話 で、今日は最後に、C# 8.0 辺りで入りそうな機能の話になります。 Caller Expression Attribute Caller Info 属性に1種類追… 続きを読む 2018/03/31 ピックアップRoslyn 3/31: C# 7.3 C# Language Design Notes アップロード祭りの続き。 Notes のうち3・4割くらいは、C# 7.3の機能の「最後の詰め」みたいな感じの検討でした。 C# 7.3 の状況 ちなみに、先日のブログでも書きましたが、C# 7.3に含める機能はもう概ね固まっているみたいです。進捗状況を見ると全項目Merged。 (大半は、nightly buildのパッケージに反映済み。まだなのは「Custom fixed」と「Indexing movable fixed buffer… 続きを読む 2018/03/24 ピックアップRoslyn 3/24: Ranges こないだのDesign Notesアップロード祭り、1月辺りの議題としては割と「Ranges」の話が多かったみたいです。今日はこれの話。 Ranges レンジ、要するに「どこからどこまで」みたいな値の範囲のことです。そこそこいろんなプログラミング言語にありますけども、例えば 1..3みたいな書き方で1~3の範囲を表そうという構文。 .NET Core 2.1で、配列などの連続したメモリ領域の一定区間を指し示すSpan<T>構造体っていう型が入りました。これに伴い、以下のように、… 続きを読む 2018/03/23 ピックアップRoslyn 3/23: no-allocation非同期メソッド、最近の Utf8String 昨日のDesign Notes祭りとはまた別件なんですが、こんな提案が。 メソッド単位でAsyncMethodBuilder属性 Proposal: Allow [AsyncMethodBuilder(...)] on methods #1407 corefx/coreclr方面でガッチガチのパフォーマンス改善をやりまくってる人からの提案。 タイトルからは内容がちょっとわかりにくいんですが、非同期メソッドの際に必要になるヒープ確保量を0 (no-allocation)にするために… 続きを読む 新しい投稿へ 過去の投稿へ
2018/05/03 C# にも型クラス(Shapes)が欲しい… 距離空間上のアルゴリズム実装 今日は C# で「距離の計算」を汎用的に、かつ、高パフォーマンスでやりたいという話。 というか、やりたいのはやまやまなんだけど、高パフォーマンスを目指すとなかなか大変なことになるという話。 Shapesが来れば楽になるはずだけども、計画上だいぶ先の話なので、待っていると厳しいので大変なのを我慢したという話でもあります。 サンプル コードの全体像: MetricSpace 距離 2つの何らかの情報の距離を求めたいことは結構あります。 近いもの同士でグルーピングしたい 最短経路を求… 続きを読む
2018/04/04 ピックアップRoslyn 4/4 C# 8.0辺りの検討事項 Design Notes の一斉アップロード祭りがらみ、今日でやっと最後。 先月28日に1つ追加の Note もあります。 とりあえずこれまでの分: C# 8.0よりさらに先を見越して、いくつかの機能の採用が決定 一番分量が多かった Ranges (C# 8.0 予定)の話 C# 7.3 で入りそうな機能の話 で、今日は最後に、C# 8.0 辺りで入りそうな機能の話になります。 Caller Expression Attribute Caller Info 属性に1種類追… 続きを読む
2018/03/31 ピックアップRoslyn 3/31: C# 7.3 C# Language Design Notes アップロード祭りの続き。 Notes のうち3・4割くらいは、C# 7.3の機能の「最後の詰め」みたいな感じの検討でした。 C# 7.3 の状況 ちなみに、先日のブログでも書きましたが、C# 7.3に含める機能はもう概ね固まっているみたいです。進捗状況を見ると全項目Merged。 (大半は、nightly buildのパッケージに反映済み。まだなのは「Custom fixed」と「Indexing movable fixed buffer… 続きを読む
2018/03/24 ピックアップRoslyn 3/24: Ranges こないだのDesign Notesアップロード祭り、1月辺りの議題としては割と「Ranges」の話が多かったみたいです。今日はこれの話。 Ranges レンジ、要するに「どこからどこまで」みたいな値の範囲のことです。そこそこいろんなプログラミング言語にありますけども、例えば 1..3みたいな書き方で1~3の範囲を表そうという構文。 .NET Core 2.1で、配列などの連続したメモリ領域の一定区間を指し示すSpan<T>構造体っていう型が入りました。これに伴い、以下のように、… 続きを読む
2018/03/23 ピックアップRoslyn 3/23: no-allocation非同期メソッド、最近の Utf8String 昨日のDesign Notes祭りとはまた別件なんですが、こんな提案が。 メソッド単位でAsyncMethodBuilder属性 Proposal: Allow [AsyncMethodBuilder(...)] on methods #1407 corefx/coreclr方面でガッチガチのパフォーマンス改善をやりまくってる人からの提案。 タイトルからは内容がちょっとわかりにくいんですが、非同期メソッドの際に必要になるヒープ確保量を0 (no-allocation)にするために… 続きを読む