Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Unsafe.BitCast のすゝめ。
Search
neno
January 11, 2025
Technology
0
260
Unsafe.BitCast のすゝめ。
.NET Conf 2024 Osaka x Fukuoka の LT 登壇資料
ブログ:
Unsafe.BitCast のすゝめ。
neno
January 11, 2025
Tweet
Share
More Decks by neno
See All by neno
分解して理解する Aspire
nenonaninu
2
1.6k
.NET 9 のパフォーマンス改善
nenonaninu
0
2.7k
C# 13 / .NET 9 の新機能 (RC 1 時点)
nenonaninu
1
2.3k
Re:ゼロから始める Observability
nenonaninu
3
990
Node-AI のリッチな WEB フロントエンドを支える技術
nenonaninu
3
1.6k
C# ではじめる OpenTelemetry
nenonaninu
0
4.8k
.NET 8 で既定で有効になった Dynamic PGO について
nenonaninu
3
8.5k
明日から使える ASP.NET Core ロギング術!
nenonaninu
1
11k
C# の async/await は実際にどうやって動いているか
nenonaninu
10
27k
Other Decks in Technology
See All in Technology
ソフトウェアプロジェクトの成功率が上がらない原因-「社会価値を考える」ということ-
ytanaka5569
0
130
コンソールで学ぶ!AWS CodePipelineの機能とオプション
umekou
2
110
年末調整プロダクトの内部品質改善活動について
kaomi_wombat
0
210
KCD Brazil '25: Enabling Developers with Dapr & Backstage
salaboy
1
120
数百台のオンプレミスのサーバーをEKSに移行した話
yukiteraoka
0
680
グループポリシー再確認
murachiakira
0
170
Javaの新しめの機能を知ったかぶれるようになる話 #kanjava
irof
3
4.9k
Agile TPIを活用した品質改善事例
tomasagi
0
310
Amazon Q Developer 他⽣成AIと⽐較してみた
takano0131
1
120
Riverpod & Riverpod Generatorを利用して状態管理部分の処理を書き換えてみる簡単な事例紹介
fumiyasac0921
0
110
Multitenant 23ai の全貌 - 機能・設計・実装・運用からマイクロサービスまで
oracle4engineer
PRO
2
120
Road to SRE NEXT@仙台 IVRyの組織の形とSLO運用の現状
abnoumaru
0
390
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
29
8.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Docker and Python
trallard
44
3.3k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
39
7.2k
Automating Front-end Workflow
addyosmani
1369
200k
Transcript
Unsafe.BitCast のすゝめ。 . NET Conf 2024 Osaka x Fukuoka 2025/01/11
何縫ねの。
何縫ねの。 NTT コミュニケーションズ イノベーションセンター Microsoft MVP for Developer Technologies (2024~)
.NET / Web Development nenoNaninu @nenoMake ブログ https://blog.neno.dev その他 https://neno.dev
OSS SignalR 周りのいろいろ開発しています •TypedSignalR.Client • C# の SignalR Client を強く型付けするための
Source Generator •TypedSignalR.Client.TypeScript • TypeScript の SignalR Client を強く型付けするための .NET Tool / library •TypedSignalR.Client.DevTools • SignalR 向けに Swagger UI 相当の GUI を自動生成する library •AspNetCore.SignalR.OpenTelemetry • SignalR の OpenTelemetry 対応 + log 強化 https://github.com/nenoNaninu
C# 13 / .NET 9 関連資料 新機能について語っています…! https://speakerdeck.com/nenonaninu/net-9-noxin-ji-neng-rc-1-shi-dian
C# 13 / .NET 9 関連資料 パフォーマンス改善についても語っています…! https://speakerdeck.com/nenonaninu/dot-net-9-nopahuomansugai-shan
Unsafe.As 使っていますか?
Unsafe.As は危険① サイズの違う値型をキャストした場合、意図しないメモリ領域を読んでしまう
Unsafe.As は危険② 参照型をキャストした場合
Unsafe.As は使い方を絞れば安全 •メモリレイアウトが同一な構造体 •サイズが同一で参照型を含まない構造体
そこで Unsafe.BitCast ですよ
Unsafe.As と Unsafe.BitCast
Unsafe.BitCast の特徴 •Unsafe.BitCast の型引数として渡せるのは構造体だけ • 構造体でなかったら実行時例外 •キャスト元とキャスト先の構造体のサイズは同一でなければならない • サイズが同一でなければ実行時例外 •パラメータは参照渡しではなく値渡し
Unsafe.As より 安全かつパフォーマンスも改善
Unsafe.BitCast はいいぞ
ブログに書いています https://blog.neno.dev/entry/2025/01/07/182438