---
# System prepended metadata

title: C# 高速化に関する情報収集 2021-11-10
tags: [C#, 高速化]

---

---
lang: ja-jp
breaks: true
---
# C# 高速化に関する情報収集 2021-11-10

> 今日からできる！簡単 .NET 高速化 Tips
> https://www.slideshare.net/xin9le/dotnetperformancetips-170268354

> CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
> https://www.slideshare.net/neuecc/cedec-2018-c-c

> 【CEDEC2018】最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
> https://www.youtube.com/watch?v=Ll3qLdsSbz4
> {%youtube Ll3qLdsSbz4 %}

> MessagePack for C#におけるオートマトンベースの文字列探索によるデシリアライズ速度の高速化
> http://neue.cc/2017/08/28_558.html
> https://neue.cc/2017/08/28_558.html

## ハッシュコード

* FarmHash 
    * googleの人が作った
    * 小さめのサイズの文字列に適している
    * google/farmhash
        * https://github.com/google/farmhash

* xxHash
    * 万能で最強
    * LZ4、ZStandardの作者が作った
    * Cyan4973/xxHash
        * https://github.com/Cyan4973/xxHash

## Automata によるルックアップ

## ボクシング（Box化）

* object型へのキャストはボクシングされる。
* 

## Static Type Caching

* 例：`Array.Empty<byte>()`
* 例：`Type.EmptyTypes`
* 一旦生成したものは、アプリケーションが終了するまでメモリに存在し続ける。
* 

## devirtualization

## ラムダ式のキャプチャ

* メソッド中にキャプチャが存在する場合、たとえ使用していなくてもILの冒頭でクラスが生成される為ゴミとなる。
    * →回避するには、キャプチャが存在するラムダ式を別メソッドにしてそれを呼び出すように変更すれば良い。


###### tags: `C#` `高速化`
