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
320
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
C# 14 / .NET 10 の新機能 (RC 1 時点)
nenonaninu
1
2k
Aspire をカスタマイズしよう & Aspire 9.2
nenonaninu
0
760
分解して理解する Aspire
nenonaninu
2
2.6k
.NET 9 のパフォーマンス改善
nenonaninu
0
3.4k
C# 13 / .NET 9 の新機能 (RC 1 時点)
nenonaninu
1
2.6k
Re:ゼロから始める Observability
nenonaninu
3
1.3k
Node-AI のリッチな WEB フロントエンドを支える技術
nenonaninu
3
1.7k
C# ではじめる OpenTelemetry
nenonaninu
0
5.7k
.NET 8 で既定で有効になった Dynamic PGO について
nenonaninu
3
11k
Other Decks in Technology
See All in Technology
ざっくり学ぶ 『エンジニアリングリーダー 技術組織を育てるリーダーシップと セルフマネジメント』 / 50 minute Engineering Leader
iwashi86
9
4.4k
CloudComposerによる大規模ETL 「制御と実行の分離」の実践
leveragestech
0
180
GCASアップデート(202508-202510)
techniczna
0
290
実践マルチモーダル検索!
shibuiwilliam
3
560
Boxを“使われる場”にする統制と自動化の仕組み
demaecan
0
190
abema-trace-sampling-observability-cost-optimization
tetsuya28
0
460
DMMの検索システムをSolrからElasticCloudに移行した話
hmaa_ryo
0
360
短期間でRAGシステムを実現 お客様と歩んだ生成AI内製化への道のり
taka0709
1
180
猫でもわかるAmazon Q Developer CLI 解体新書
kentapapa
1
310
Digitization部 紹介資料
sansan33
PRO
1
5.8k
InsightX 会社説明資料/ Company deck
insightx
0
200
日本のソブリンAIを支えるエヌビディアの生成AIエコシステム
acceleratedmu3n
0
120
Featured
See All Featured
Navigating Team Friction
lara
190
15k
The Invisible Side of Design
smashingmag
302
51k
Stop Working from a Prison Cell
hatefulcrawdad
272
21k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
720
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Context Engineering - Making Every Token Count
addyosmani
8
330
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Building an army of robots
kneath
306
46k
Testing 201, or: Great Expectations
jmmastey
46
7.7k
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