C#+WPFチューニング戦記

C#とWPFで高速なコードと最適なシステムを書くためにやってきたいろいろな事を書いてみます。.NET Frameworkのソースコードを読み解きましょう。なお、ここに書かれているのは個人の見解であって何らかの団体や企業の見解を代表するものではありません。

2018-01-01から1年間の記事一覧

最近の活動(主に業務外)

qiita.com 最近のブログをまとめただけの内容ですが。Qiitaの Advent Calendar はここしばらく恒例になりつつあります。 あと、勉強会など開催しました。 スライド WinFormsからWPFへ from Yamamoto Reki www.slideshare.net 教材ソースコード github.com 個…

Blazor の大部分がASP.NET Core 3.0 のプロジェクトに移動した

すぐにBlazorが使えるという意味ではありませんが、Razorが標準コンポーネントになるのは素直に嬉しいところです。 github.com 機械翻訳ですが、以下の通り BlazorとRazor Componentsプログラミングモデルのほとんどすべてのソースは、ASP.NETの中央コアリポ…

Blazor で PWAを作る

最近C#も良くなってきましたが、Web開発環境も良くなってきました。 いろいろなことができるのは良いことです。 今回はBlazor 0.7.0 で PWA(プログレッシブWebアプリ)を作ってみました。 Blazor 0.7.0 の環境構築はこちらのとおりです。 Blazor 0.7.0 experi…

Blazor を用いたスクリプトレスWebアプリ開発の可能性

Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性 from Yamamoto Reki www.slideshare.net という勉強会を職場でやったので、スライドを共有します。 なお、ここに書かれていることは私見で、特定の団体や企業の考えを代表するものではありません。

Blazor 0.6.0 がリリースされましたね

Blazor 0.6.0 experimental release now available | ASP.NET Blog Ver0.6.0ではジェネリック型やテンプレートが使えるようになったようです。

Blazorを使ってみた(3)

腰痛で倒れていました。不甲斐ない…。 どこまで再利用性や汎用性を高められるかと思って、どうせならXAMLでMVVMをするときのように書きたいと考え、 Resources.cshtml などを作り始めています。 @using Foo.Shared; @switch (DataContext) { case User user: <User DataContext=@user></User>…

Blazorを使ってみた(2)…再

役に立つ情報を書けていなかったので1つ前の記事は削除しました。 Blazorに取りつかれて毎晩少しずつコードを書いていると、どんどんコントロールの整理が進んでいきます。今のところ業務的なDBに対するCRUDを行なう画面を作ってもJavaScriptの記述量は0行と…

少し前にみんな大興奮だったBlazorを使ってみた(1)

あんまり入門記事は書かないタイプの人なのですが、たまにはですね。 触ってみたらちょっと書きたくなったのです。 まず、以下を取りそろえます。 VisualStudio2017(最新版 15.8.2)←何でも作るのでフルインストールしてます .NET Core 2.1(最新版 2.1.401) N…

ToArrayを高速化する話

IEnumerable.ToArray() (拡張メソッド)の.NET Frameworkの実装はこちらです。 https://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,ed118118b642d9d4 要素数が分かるICollectionと分からないIEnumerableで実装を分けるのは実に合…

共用体でGuidすら速くできる

CEDEC2018の傍ら、こんなベンチマークを思いつきで書いていました。 まずは結果からご覧ください。Meanの値から、だいたいSystem.Guidよりも2倍は高速です。 Method Mean Error StdDev ImmutableGuid_In 20.83 us 0.1102 us 0.0977 us ImmutableGuid 22.46 …

CEDEC2018 に行ってきます

本日は完全に余談 会社が3日分の受講料を出してくれたことと、その期間を快く送り出してくださったクライアント(と書いて戦友と読む)の期待に応えるため、CEDEC2018で勉強してこようと思います。 CEDECではまだ時々会える古い知人も居ります。 そういえばM.K…

Rect.Containsもreadonly struct + in で高速化できる

RectとImmutableRectのContainsのベンチマークです。 IsEmptyの判定を排除できればもっと速度が出るのですが、互換性を重視してあえて削除していません。 なんでこれほどRectに拘るかといいますと、仮想化は矩形の判定の塊だからです。仮想化を高速化したい…

C#7.3 in this ValueTuple が速い

C#7.3でこんなベンチマークをしました。 in this ValueTuple の組み合わせが出来ると本当に高速です。 [Benchmark] public void DoubleMaxLegacy() { for(int idx=0 ; idx<10000;idx++) result[idx] = Math.Max((double)(10000 - idx), (double)idx); } [Ben…

最速C #7.x

最速C# 7.x from Yamamoto Reki www.slideshare.netそんな題名で社内勉強会を実施しました。C#7,xになってから、最速&安全なコードの書き方は変化したと思います。