qiita.com 最近のブログをまとめただけの内容ですが。Qiitaの Advent Calendar はここしばらく恒例になりつつあります。 あと、勉強会など開催しました。 スライド WinFormsからWPFへ from Yamamoto Reki www.slideshare.net 教材ソースコード github.com 個…
すぐにBlazorが使えるという意味ではありませんが、Razorが標準コンポーネントになるのは素直に嬉しいところです。 github.com 機械翻訳ですが、以下の通り BlazorとRazor Componentsプログラミングモデルのほとんどすべてのソースは、ASP.NETの中央コアリポ…
最近C#も良くなってきましたが、Web開発環境も良くなってきました。 いろいろなことができるのは良いことです。 今回はBlazor 0.7.0 で PWA(プログレッシブWebアプリ)を作ってみました。 Blazor 0.7.0 の環境構築はこちらのとおりです。 Blazor 0.7.0 experi…
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性 from Yamamoto Reki www.slideshare.net という勉強会を職場でやったので、スライドを共有します。 なお、ここに書かれていることは私見で、特定の団体や企業の考えを代表するものではありません。
Blazor 0.6.0 experimental release now available | ASP.NET Blog Ver0.6.0ではジェネリック型やテンプレートが使えるようになったようです。
腰痛で倒れていました。不甲斐ない…。 どこまで再利用性や汎用性を高められるかと思って、どうせならXAMLでMVVMをするときのように書きたいと考え、 Resources.cshtml などを作り始めています。 @using Foo.Shared; @switch (DataContext) { case User user: <User DataContext=@user></User>…
役に立つ情報を書けていなかったので1つ前の記事は削除しました。 Blazorに取りつかれて毎晩少しずつコードを書いていると、どんどんコントロールの整理が進んでいきます。今のところ業務的なDBに対するCRUDを行なう画面を作ってもJavaScriptの記述量は0行と…
あんまり入門記事は書かないタイプの人なのですが、たまにはですね。 触ってみたらちょっと書きたくなったのです。 まず、以下を取りそろえます。 VisualStudio2017(最新版 15.8.2)←何でも作るのでフルインストールしてます .NET Core 2.1(最新版 2.1.401) N…
IEnumerable.ToArray() (拡張メソッド)の.NET Frameworkの実装はこちらです。 https://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,ed118118b642d9d4 要素数が分かるICollectionと分からないIEnumerableで実装を分けるのは実に合…
CEDEC2018の傍ら、こんなベンチマークを思いつきで書いていました。 まずは結果からご覧ください。Meanの値から、だいたいSystem.Guidよりも2倍は高速です。 Method Mean Error StdDev ImmutableGuid_In 20.83 us 0.1102 us 0.0977 us ImmutableGuid 22.46 …
本日は完全に余談 会社が3日分の受講料を出してくれたことと、その期間を快く送り出してくださったクライアント(と書いて戦友と読む)の期待に応えるため、CEDEC2018で勉強してこようと思います。 CEDECではまだ時々会える古い知人も居ります。 そういえばM.K…
RectとImmutableRectのContainsのベンチマークです。 IsEmptyの判定を排除できればもっと速度が出るのですが、互換性を重視してあえて削除していません。 なんでこれほどRectに拘るかといいますと、仮想化は矩形の判定の塊だからです。仮想化を高速化したい…
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 from Yamamoto Reki www.slideshare.netそんな題名で社内勉強会を実施しました。C#7,xになってから、最速&安全なコードの書き方は変化したと思います。
C#における struct は引数が無いコンストラクタを書くことができないのですが、return new Size();こういうのはコスト0で戻り値に格納してくれるのだろうかという疑問について、調査しました。 極めて厳密に最適化をすると、このコンストラクタはインライン…
https://support.microsoft.com/en-us/kb/3088957Issue 4でここ2回の日記で問題にしていた件が解消しているようです。GC内部で長時間フリーズする問題です。
devenv.exe.configにgcServerを有効にする1行を加えたら素晴らしい安定。hotfix待ちの方々に福音として。http://blogs.microsoft.co.il/dorony/2015/08/08/beware-of-net-4-6-workstation-gc/理由はこちらにて。
きっかけは、VS2015でビルドしたプログラムが30秒もフリーズした事でした。dotTraceでGCがぶんぶん回ってるのを見て、検索したところ、こんな話に当たりました。http://stackoverflow.com/questions/32048094/net-4-6-and-gc-freezeそこのリンクによるとhttp…
やっと、WPF高速化ネタの一番大きいものをオープンにしました。昨晩の勉強会です。資料は近日スライドシェア予定です。ソースコードも公開予定です。手加減一切無し。ただ高速に動くためのWPFコーディングパターンです。消極的な戦術で逃げ切れない時はどう…
新しい糖衣構文が出てきたらILの品質を確認しましょう。 VisualStudio 2015のC#では以下のように同じようなプロパティを記述できます。 class Test{ int Value1{ get; set; } = 100; int _value2 = 100; int Value2 { get{ return _value2; } set{ _value2 =…
デリゲートの最適化についてはもう1歩踏み込んでみたいと思います。 下記のようなコードをビルドしてみると /// <summary> /// string.IsNullOrWhiteSpace /// </summary> static Func<string, bool> stringIsNullOrWhiteSpace = string.IsNullOrWhiteSpace; static void Main(string[] args)</string,>…
デリゲートのパフォーマンスhttp://qiita.com/Temarin_PITA/items/d851e101cbce6dd92d86久々にこれはビックリしました。ラムダのあれは糖衣構文だと思い込んでいました。久々にしてやられた感じです。勉強させていただきました。
完成した、完成度の高い開発環境とはなんでしょうか。 諸説ありますが、個人的には以下の表現が可能なものだと思っています。 「XはXで自己定義可能」 例えば、C言語のコンパイラはC言語で制作可能です。D言語もC#もJavaも可能です。 プログラミング言語に限…
全ての画面を作るというわけにいかないプロジェクトもあるので、WindowsFormsHostをグリッド上に配置するというケースも時々あるかと思います。 そんなときに、GridSplitterを入れるとWindowsFormsのコントロールが酷い描画をするという話はよく聞きます。 …
スライドがどうも整ってないのでまだ公には出してないのですが。今までくどくどと挙げてきたWPFボトルネックを全部避けてみるだけで、実際どの位速いパネルが生まれるのかというあたりをデモしました。その時にちょっとおまけ話としてイベントの発射地点につ…
WPF Benchmark WPF Benchmark - Source Code私がここ数日言っていたことは、ここのコードでそのまま試せます。 走らせながら、太さを調整してみるとわかると思います。 モニターのデフォルト倍率によって多少変化しますが、要は実描画時に何ピクセルの太さに…
存分に強いグラフィックチップが有っても、太さ約1.7pxくらいが一番速いようです。グラフィックチップの種類はあまり問わず似たような性能曲線。 GPUの力もある程度働いているようです。でもCPU側が少々過剰でアンバランスです。そろそろMicrosoftに問い合わ…
あんまりショッキングな書き方をしたくありませんので、現時点ではある開発機で発生した事象として記載します。始点終点がランダムである場合、線の太さが√3に近いほど高速になるという実測データを得ました。大まかに言いますと 最速は 1.71px~1.74pxくら…
foreachで12bytes程度以上の値型配列をループするより、delegateでref型を受ける形のループの方が速いのですね。具体的な根拠は Measure It ですが。 Measure It - Home明示的に delegate って書かないといけないところがちょっと苦しいですが。 ILコード的…
XAML Advent Calendar 2014 - Qiita XAML Advent Calendar 2014 - Qiita こちら向けの記事です。1日遅刻しました。ごめんなさい。 あちこちで書いて回っておりますがPanel.Childrenがとても重いのです。 遅い原因はこちら。 http://referencesource.microsof…