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.9k
.NET 9 のパフォーマンス改善
nenonaninu
0
2.8k
C# 13 / .NET 9 の新機能 (RC 1 時点)
nenonaninu
1
2.3k
Re:ゼロから始める Observability
nenonaninu
3
1k
Node-AI のリッチな WEB フロントエンドを支える技術
nenonaninu
3
1.6k
C# ではじめる OpenTelemetry
nenonaninu
0
4.9k
.NET 8 で既定で有効になった Dynamic PGO について
nenonaninu
3
8.6k
明日から使える ASP.NET Core ロギング術!
nenonaninu
1
11k
C# の async/await は実際にどうやって動いているか
nenonaninu
10
28k
Other Decks in Technology
See All in Technology
サーバレス、コンテナ、データベース特化型機能をご紹介。CloudWatch をもっと使いこなそう!
o11yfes2023
0
140
生成AIによるCloud Native基盤構築の可能性と実践的ガードレールの敷設について
nwiizo
3
120
Amazon CloudWatch Application Signals ではじめるバーンレートアラーム / Burn rate alarm with Amazon CloudWatch Application Signals
ymotongpoo
5
400
Рекомендации с нуля: как мы в Lamoda превратили главную страницу в ключевую точку входа для персонализированного шоппинга. Данил Комаров, Data Scientist, Lamoda Tech
lamodatech
0
690
はじめてのSDET / My first challenge as a SDET
bun913
1
240
Webアプリを Lambdaで動かすまでに考えること / How to implement monolithic Lambda Web Application
_kensh
7
1.3k
YOLOv10~v12
tenten0727
4
930
ElixirがHW化され、最新CPU/GPU/NWを過去のものとする数万倍、高速+超省電力化されたWeb/動画配信/AIが動く日
piacerex
0
130
ワールドカフェI /チューターを改良する / World Café I and Improving the Tutors
ks91
PRO
0
110
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming
tomzoh
0
220
Classmethod AI Talks(CATs) #21 司会進行スライド(2025.04.17) / classmethod-ai-talks-aka-cats_moderator-slides_vol21_2025-04-17
shinyaa31
0
560
OSSコントリビュートをphp-srcメンテナの立場から語る / OSS Contribute
sakitakamachi
0
1.4k
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.1k
Docker and Python
trallard
44
3.3k
KATA
mclloyd
29
14k
Site-Speed That Sticks
csswizardry
5
480
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
104
19k
The Cost Of JavaScript in 2023
addyosmani
49
7.7k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.6k
Become a Pro
speakerdeck
PRO
27
5.3k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
9
750
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