狠狠撸

狠狠撸Share a Scribd company logo
1
C#ゲームプログラミングは
ホントにメモリのことに無頓着でいいの?
KMC-ID:crys
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
2
自己紹介(C#er歴)
? B1で勉強してまる8年
? B1、B2でC#製ゲームを3本制作
? B2-B4でバイト:C#/WPF、VB6の秘伝のソース
? B4の研究、M1の学内ハッカソン、および
インターンのゲーム制作でUnityを使用
? 仕事はUnityとか
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
3
C#、C++よりばり便利
入学直後、新歓期の雑談にて:
「C++っていう闇の言語があるんだけど…
(黒魔術がヤバい的な話)」
「C++はメモリも自分で管理せなあかんくって。
C#はそのへん最後までいい感じにしてくれる」
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
当時の先輩
4
当時のcrysさん
「(メモリとか知らないけど)
C#すごい!!!!!!!」
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
5
C#で作った(学部時代)
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
妖精さんに貢ぐ
アクションパズル
妖精さんたちがお姫様を
守りながら進む
戦術シミュレーション
妖精さん等が導火線を
つなげて消していく
対戦アクションパズル
6
C#で作った(学部時代)
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
妖精さんに貢ぐ
アクションパズル
妖精さんたちがお姫様を
守りながら進む
戦術シミュレーション
妖精さん等が導火線を
つなげて消していく
対戦アクションパズル
見よう見まね
「再帰よくわからん」
コード書いてない
グラフィックと
プランニング
私が
作りました
7
ゲームがNFでトラブル
長時間プレイすると
(メニュー画面とパズル画面を行き来すると)
ゲームが重くなる
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
原因:メモリリーク。音声リソースの解放し忘れがあった
XNA(MonoGameの前身)では、Loadしたテクスチャや音声波形は
明示的にDispose関数を呼ばないとメモリから解放されない
→ゲームがどんどんメモリを使い潰していく!
私が
作りました
メモリ
メモリ
メモリ
8
ゲームがNFでトラブル
長時間プレイすると
(メニュー画面とパズル画面を行き来すると)
ゲームが重くなる
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
原因:メモリリーク。音声リソースの解放し忘れがあった
XNA(MonoGameの前身)では、Loadしたテクスチャや音声波形は
明示的にDispose関数を呼ばないとメモリから解放されない
→ゲームがどんどんメモリを使い潰していく!
私が
作りました
メモリ
メモリ
メモリ
「C++はメモリも自分で管理せなあかんくって。
C#はそのへん最後までいい感じにしてくれる」
9
~生みの王子~
C#で書ける!!!!!!ゲームエンジン
(Unityが流行り出した頃にはXNAは死んでた)
最高すぎていろいろ作った (院生時代)
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
センサデバイスのモニターテスト用
アプリケーション
コンソール向けゲーム全周画像ビューワ
Not printed Not printed
10
~時を超えた処理落ち~
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
シーンの動的読み込み?解放をしたら
めちゃくちゃ(>0.5sec)処理落ちした
原因:ガベージコレクション(メモリの自動解放)がクソ重い
Unityで使われているメモリ管理の仕組みが超☆前時代的で、
使っていたメモリを再利用可能にする処理が動くと
数フレーム単位でアプリの処理が止まる
メモリ
メモリ
メモリ
112018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
12
この講座の内容
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
メモリって何?
C#におけるメモリ管理
ガベージコレクションとうまく付き合う
君のコードに潜むガベージコレクションの元凶 Unity編
13
メモリって何?
を している人には真新しい話はありません
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
14
メインメモリ
本講座ではこれ以降、単に
「メモリ」と言った場合は
メインメモリを指します
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
ALU
レジスタ
(二次記憶)
15
メモリ
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
ALU
レジスタ
? データを格納するためのマスが並んでいる
? マスには番地が振られている
? 番地情報を通してデータを読み書きする
中身を拡大
100
101
102
103
104
105
106
107
108
109
110
……
16
メモリの確保と解放
メモリのサイズは有限?同じ場所を使い回したい
ある番地に「まだ使うデータ」が置いてあるかどうかを
誰かが管理しておく必要がある
さもなくば…
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
100番地に置いておこう
100番地使おうとしたら
何かあったわウマー
100
101
99
100
101
99
17
メモリの確保と解放
メモリのサイズは有限?同じ場所を使い回したい
ある番地に「まだ使うデータ」が置いてあるかどうかを
誰かが管理しておく必要がある
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
100番地
確保
してます
超越的存在
100
101
99
18
メモリの管理方法
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
19
スタック
メモリ上の隣接した番地に積み上げ?積み降ろすように
データを配置?解放していくデータ管理方式
? 配置の効率がよい
? データがいつ使われなくなるかが明確でないと使えない
? 積めるサイズは有限
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
プログラムの関数呼び出しでは、より新しく作った変数ほど
より早く使わなくなるので、スタックで管理できる
20
ヒープ
データの大きさや、確保?解放の順序に依存することなく
データを管理できる方式
? スタックで管理できないデータを管理できる
? 使っている場所や大きさをすべて把握しておく必要がある
? 新たに空き領域を探す手間がある
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
C言語では malloc (C++ なら new 等) でメモリを確保したときは
ヒープにデータを置く
21
ヒープは管理が面倒
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
ヒープのどの領域が使われているかはOSが管理
確保と解放は利用者 (プログラム)の責任
利用者が解放し忘れるとOSに管理され続ける
メモリ
リーク
逆に二重に解放しても問題になる…
22
C#におけるメモリ管理
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
23
ガベージコレクション (GC)
C#(の実行環境)は
ヒープ上の使われなくなったメモリ領域 を自動的に解放する
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
まかせた
24
ガベージコレクション (GC)
C#(の実行環境)は
ヒープ上の使われなくなったメモリ領域 を自動的に解放する
ついでに空き領域を詰める (コンパクション)
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
25
GCと手動メモリ管理の比較
GC
メモリリークしないので、
管理が楽
解放できる領域の探索に
時間がかかる
手動メモリ管理
確保?解放する領域を
すべて指定しているので
GCよりも高速?低負荷
メモリリークに注意
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
26
…ん?
←こいつメモリリークしたじゃん
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
私が
作りました
∵ C#実行環境の外側にある機能を使用するときは、
OSのメモリを確保する必要がある!!
OSの管理しているメモリ
C#実行環境
音を鳴らす機能で
確保したメモリ
あの機能
使いたい
御意
音を鳴らす
機能
ブヒィィッ
27
C#でメモリリークしないためには…
? C#が管理していないメモリ(アンマネージドメモリ)を
利用するクラスが使わないか、ドキュメントを見る
? IDisposable が実装されているクラスのインスタンスで
確実に Dispose 関数を呼ぶ実装をする
? using 節が使えるなら使おう
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
using (var sr = new StreamReader(“example.txt”)) {
// do something
}
えー
28
Unityはメモリリークする?
Unityの機能だけを使用していてもメモリリークする(それっぽい状態になる)
アセットを解放しても参照されてるリソースが解放されない可能性
↓↓ 以下を読んで(丸投げ)
【Unity】アセットのUnloadとDestroyについて – テラシュールブログ
http://tsubakit1.hateblo.jp/entry/2016/10/02/232723
(あとは悪名高いアセットバンドルはアンロード忘れるとメモリリークするとか……)
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
29
ガベージコレクションとうまく付き合う
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
30
GC、実際重い
C#の処理系に依るが、環境によっては
メインの処理を止めて、
一気にインスタンスを破棄したりする
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
だと2フレームくらい
平気で持ってかれるかも…
31
ガベージ コレクションの条件
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/fundamentals#conditions_for_a_garbage_collection
GCはいつ発生するの?
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
システムの物理メモリが少ない場合。
? OS からのメモリ不足通知またはホストによって示されたメモリ不足のいずれかによって検出されます。
オブジェクトによって使用されているメモリが、許容されるしきい値を超える場合。
? このしきい値は、プロセスの進行に合わせて絶えず調整されます。
GC.Collect メソッドが呼び出された場合。
? ほとんどの場合、ガベージ コレクターは継続して実行されるため、このメソッドを呼び出す必要は
ありません。このメソッドは、主に特別な状況やテストで使用されます。
GCは突然に
32
GC、実際重い (再掲)
C#の処理系に依るが、環境によっては
メインの処理を止めて、
一気にインスタンスを破棄したりする
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
弾幕をギリギリで避けてる時に2フレーム止まったらどうする???
332018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
34
GCを根源から断ち切るには?
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
ヒープを使わない…ことは難しい
? クラス型のインスタンスや配列はヒープに確保される
? フレームワーク側の機能がクラス型で実装されていることも多い
プレイアブルなシーンの間、GCを発生させないようにできないか?
? GCの発生条件は「メモリが、許容されるしきい値を超える場合」…
?ヒープに新たにメモリを確保しようとしなければ、
GCの発生は起きない
35
メモリ確保が発生しないプログラミング (1/2)
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
class GoodScene
{
private Bullet[] bullets;
public GoodScene()
{
bullets = new Bullet[256];
}
public void MainLoop()
{
bullets[index].position = ...
}
}
class BadScene
{
private List<Bullet> bullets;
public BadScene() {}
public void MainLoop()
{
var b = new Bullet();
bullets.Add(b)
b.position = ...
}
}
シーン開始時のロードで、必要な情報をすべてメモリに載せる
36
メモリ確保が発生しないプログラミング (2/2)
意図せぬメモリ確保がないかチェックする
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
Visual Studio の
診断ツール
Unity の
Profiler
37
君のコードに潜む
ガベージコレクションの元凶 Unity編
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
38
OnGUI
void OnGUI(){
GUI.Label(new Rect(0,0,32,32),”TEST”));
}
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
GUIクラスを使用して画面描画を行うと、
毎フレーム、ヒープへのメモリ確保が行われる
GUIは開発?デバッグ機能という認識。製品ではuGUIなどへ移行を
39
文字列演算
string はクラスなので、定義するとメモリに確保される (回避方法なし)
文字列の結合(+演算子)は、結合後の新しい文字列としてメモリに確保される
StringBuilder を使用すれば、メモリの確保を抑えることができる
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
string str = “点数は” + score.ToString() + “点です”;
StringBuilder sb = new StringBuilder();
void Update(){
sb.Append(“点数は”); sb.Append(score); sb.Append(“点です”);
string str = sb.ToString(); // メモリ確保はどうしても起きる
}
40
List
動的に配列のサイズを変えたくてListを使った?甘えんな!!
当然メモリの確保が行われる。
固定長配列使え固定長配列
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
// List<int> intList で定義している
intList.Add(3);
int[] intArray = new int[256];
41
LINQ
LINQめっちゃ使いたいけどメモリアロケーションあるねん…
for ループ回して配列なめてください…
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
using System.Linq;
...
// int[] intArray で定義している
intArray.Count(i => i == 3);
42
Coroutine (1/3)
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
IEnumerator TimerCoroutine()
{
// 300フレーム待つ
for(int i=0; i < 300; i++){
yield return new WaitForEndOfFrame();
}
// do something
}
StartCoroutine(TimerCoroutine());
43
Coroutine (2/3)
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
var waitForEndOfFrame = new WaitForEndOfFrame();
IEnumerator TimerCoroutine()
{
// 300フレーム待つ
for(int i=0; i < 300; i++){
yield return waitForEndOfFrame;
}
// do something
}
StartCoroutine(TimerCoroutine());
44
Coroutine (3/3)
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
var waitForEndOfFrame = new WaitForEndOfFrame();
IEnumerator TimerCoroutine()
{
// 300フレーム待つ
for(int i=0; i < 300; i++){
yield return waitForEndOfFrame;
}
// do something
}
StartCoroutine(TimerCoroutine());
そもそもコルーチンを
生成すると
メモリ確保される…
コルーチンなしで頑張る…?
45
などなど
詳しい情報は「Unity GC Alloc」みたいなのでググって
うにばな メモリ使用量の最適化?ヒープメモリ ほか – livedoor Blog
http://blog.livedoor.jp/akinow/archives/52474053.html
↑ただし、foreach で List を回すとメモリ確保する(クソ)仕様は
Unity 5.5 で修正済
neue cc - C#のGCゴミとUnity(5.5)のコンパイラアップデートによるListの
foreach問題解決について
http://neue.cc/2016/08/05_537.html
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
46
まとめ
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
47
まとめ
C#ゲームプログラミングでも
メモリのことを気にしてあげる必要がある
2018/3/19 春合宿2018講座;C#ゲームプログラムとメモリ;crys
アクションゲームのリアルタイム性を損ねないために
? ゲームシーン中にヒープからメモリ確保をしないこと
? 専用ツールでメモリの使用量を见るべし

More Related Content

What's hot (20)

ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
?
出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なこと出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なこと
historia_Inc
?
ワタシは厂颈苍驳濒别迟辞苍がキライだ
ワタシは厂颈苍驳濒别迟辞苍がキライだワタシは厂颈苍驳濒别迟辞苍がキライだ
ワタシは厂颈苍驳濒别迟辞苍がキライだ
Tetsuya Kaneuchi
?
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
?
猫でも分かる鲍惭骋
猫でも分かる鲍惭骋猫でも分かる鲍惭骋
猫でも分かる鲍惭骋
エピック?ゲームズ?ジャパン Epic Games Japan
?
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られたNintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
エピック?ゲームズ?ジャパン Epic Games Japan
?
颁#と滨尝とネイティブと
颁#と滨尝とネイティブと颁#と滨尝とネイティブと
颁#と滨尝とネイティブと
信之 岩永
?
ゲームの仕様书を书こう4 仕様书作成で楽をする肠辞苍蹿濒耻别苍肠别の活用
ゲームの仕様书を书こう4 仕様书作成で楽をする肠辞苍蹿濒耻别苍肠别の活用ゲームの仕様书を书こう4 仕様书作成で楽をする肠辞苍蹿濒耻别苍肠别の活用
ゲームの仕様书を书こう4 仕様书作成で楽をする肠辞苍蹿濒耻别苍肠别の活用
Sugimoto Chizuru
?
猫でも分かる鲍贰4のポストプロセスを使った演出?絵作り
猫でも分かる鲍贰4のポストプロセスを使った演出?絵作り猫でも分かる鲍贰4のポストプロセスを使った演出?絵作り
猫でも分かる鲍贰4のポストプロセスを使った演出?絵作り
エピック?ゲームズ?ジャパン Epic Games Japan
?
鲍苍颈迟测开発で使える设计の话+窜别苍箩别肠迟の绍介
鲍苍颈迟测开発で使える设计の话+窜别苍箩别肠迟の绍介鲍苍颈迟测开発で使える设计の话+窜别苍箩别肠迟の绍介
鲍苍颈迟测开発で使える设计の话+窜别苍箩别肠迟の绍介
torisoup
?
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
?
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
エピック?ゲームズ?ジャパン Epic Games Japan
?
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
UnityTechnologiesJapan002
?
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
?
鲍苍颈迟测でオニオンアーキテクチャ
鲍苍颈迟测でオニオンアーキテクチャ鲍苍颈迟测でオニオンアーキテクチャ
鲍苍颈迟测でオニオンアーキテクチャ
torisoup
?
窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法
窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法
窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法
Yoshifumi Kawai
?
鲍苍颈罢补蝉办入门
鲍苍颈罢补蝉办入门鲍苍颈罢补蝉办入门
鲍苍颈罢补蝉办入门
torisoup
?
[CEDEC2018] UE4アニメーションシステム総おさらい
[CEDEC2018] UE4アニメーションシステム総おさらい[CEDEC2018] UE4アニメーションシステム総おさらい
[CEDEC2018] UE4アニメーションシステム総おさらい
エピック?ゲームズ?ジャパン Epic Games Japan
?
鲍苍谤别补濒叠耻颈濒诲罢辞辞濒勉强会まとめ
鲍苍谤别补濒叠耻颈濒诲罢辞辞濒勉强会まとめ鲍苍谤别补濒叠耻颈濒诲罢辞辞濒勉强会まとめ
鲍苍谤别补濒叠耻颈濒诲罢辞辞濒勉强会まとめ
Shun Sasaki
?
鲍贰4と鲍苍谤别补濒颁++について
鲍贰4と鲍苍谤别补濒颁++について鲍贰4と鲍苍谤别补濒颁++について
鲍贰4と鲍苍谤别补濒颁++について
Masahiko Nakamura
?
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
?
出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なこと出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なこと
historia_Inc
?
ワタシは厂颈苍驳濒别迟辞苍がキライだ
ワタシは厂颈苍驳濒别迟辞苍がキライだワタシは厂颈苍驳濒别迟辞苍がキライだ
ワタシは厂颈苍驳濒别迟辞苍がキライだ
Tetsuya Kaneuchi
?
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
?
颁#と滨尝とネイティブと
颁#と滨尝とネイティブと颁#と滨尝とネイティブと
颁#と滨尝とネイティブと
信之 岩永
?
ゲームの仕様书を书こう4 仕様书作成で楽をする肠辞苍蹿濒耻别苍肠别の活用
ゲームの仕様书を书こう4 仕様书作成で楽をする肠辞苍蹿濒耻别苍肠别の活用ゲームの仕様书を书こう4 仕様书作成で楽をする肠辞苍蹿濒耻别苍肠别の活用
ゲームの仕様书を书こう4 仕様书作成で楽をする肠辞苍蹿濒耻别苍肠别の活用
Sugimoto Chizuru
?
鲍苍颈迟测开発で使える设计の话+窜别苍箩别肠迟の绍介
鲍苍颈迟测开発で使える设计の话+窜别苍箩别肠迟の绍介鲍苍颈迟测开発で使える设计の话+窜别苍箩别肠迟の绍介
鲍苍颈迟测开発で使える设计の话+窜别苍箩别肠迟の绍介
torisoup
?
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
?
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
UnityTechnologiesJapan002
?
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
?
鲍苍颈迟测でオニオンアーキテクチャ
鲍苍颈迟测でオニオンアーキテクチャ鲍苍颈迟测でオニオンアーキテクチャ
鲍苍颈迟测でオニオンアーキテクチャ
torisoup
?
窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法
窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法
窜别谤辞贵辞谤尘补迟迟别谤に见る颁#で最速のシリアライザを作成する100亿の方法
Yoshifumi Kawai
?
鲍苍颈罢补蝉办入门
鲍苍颈罢补蝉办入门鲍苍颈罢补蝉办入门
鲍苍颈罢补蝉办入门
torisoup
?
鲍苍谤别补濒叠耻颈濒诲罢辞辞濒勉强会まとめ
鲍苍谤别补濒叠耻颈濒诲罢辞辞濒勉强会まとめ鲍苍谤别补濒叠耻颈濒诲罢辞辞濒勉强会まとめ
鲍苍谤别补濒叠耻颈濒诲罢辞辞濒勉强会まとめ
Shun Sasaki
?
鲍贰4と鲍苍谤别补濒颁++について
鲍贰4と鲍苍谤别补濒颁++について鲍贰4と鲍苍谤别补濒颁++について
鲍贰4と鲍苍谤别补濒颁++について
Masahiko Nakamura
?

More from 京大 マイコンクラブ (20)

テキストファイルを読む? 第1回
テキストファイルを読む?  第1回テキストファイルを読む?  第1回
テキストファイルを読む? 第1回
京大 マイコンクラブ
?
かわいくなろうとしたら语汇力が下がった话
かわいくなろうとしたら语汇力が下がった话かわいくなろうとしたら语汇力が下がった话
かわいくなろうとしたら语汇力が下がった话
京大 マイコンクラブ
?
Common Lisp入門
Common Lisp入門Common Lisp入門
Common Lisp入門
京大 マイコンクラブ
?
多倍长整数の乗算と高速フーリエ変换
多倍长整数の乗算と高速フーリエ変换多倍长整数の乗算と高速フーリエ変换
多倍长整数の乗算と高速フーリエ変换
京大 マイコンクラブ
?
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
京大 マイコンクラブ
?
Geometry with Unity
Geometry with UnityGeometry with Unity
Geometry with Unity
京大 マイコンクラブ
?
セミコロンレス肠++
セミコロンレス肠++セミコロンレス肠++
セミコロンレス肠++
京大 マイコンクラブ
?
エンジニアと健康エンジニアと健康
エンジニアと健康
京大 マイコンクラブ
?
女の子になれなかった人のために
女の子になれなかった人のために女の子になれなかった人のために
女の子になれなかった人のために
京大 マイコンクラブ
?
笔颈别迟で竞プロしよう
笔颈别迟で竞プロしよう笔颈别迟で竞プロしよう
笔颈别迟で竞プロしよう
京大 マイコンクラブ
?
もし太阳のコアが滨苍迟别濒颁辞谤别だったら
もし太阳のコアが滨苍迟别濒颁辞谤别だったらもし太阳のコアが滨苍迟别濒颁辞谤别だったら
もし太阳のコアが滨苍迟别濒颁辞谤别だったら
京大 マイコンクラブ
?
プログラムを高速化する話Ⅱ ?GPGPU編?
プログラムを高速化する話Ⅱ ?GPGPU編?プログラムを高速化する話Ⅱ ?GPGPU編?
プログラムを高速化する話Ⅱ ?GPGPU編?
京大 マイコンクラブ
?
ドット絵でプログラミング!难解言语『笔颈别迟』勉强会
ドット絵でプログラミング!难解言语『笔颈别迟』勉强会ドット絵でプログラミング!难解言语『笔颈别迟』勉强会
ドット絵でプログラミング!难解言语『笔颈别迟』勉强会
京大 マイコンクラブ
?
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
京大 マイコンクラブ
?
DTM練習会2017第1.5回 「伴奏の付け方」DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
京大 マイコンクラブ
?
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
京大 マイコンクラブ
?
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
京大 マイコンクラブ
?
Altseed
AltseedAltseed
Altseed
京大 マイコンクラブ
?
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
京大 マイコンクラブ
?
C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回
京大 マイコンクラブ
?
かわいくなろうとしたら语汇力が下がった话
かわいくなろうとしたら语汇力が下がった话かわいくなろうとしたら语汇力が下がった话
かわいくなろうとしたら语汇力が下がった话
京大 マイコンクラブ
?
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
京大 マイコンクラブ
?
エンジニアと健康エンジニアと健康
エンジニアと健康
京大 マイコンクラブ
?
もし太阳のコアが滨苍迟别濒颁辞谤别だったら
もし太阳のコアが滨苍迟别濒颁辞谤别だったらもし太阳のコアが滨苍迟别濒颁辞谤别だったら
もし太阳のコアが滨苍迟别濒颁辞谤别だったら
京大 マイコンクラブ
?
ドット絵でプログラミング!难解言语『笔颈别迟』勉强会
ドット絵でプログラミング!难解言语『笔颈别迟』勉强会ドット絵でプログラミング!难解言语『笔颈别迟』勉强会
ドット絵でプログラミング!难解言语『笔颈别迟』勉强会
京大 マイコンクラブ
?
DTM練習会2017第1.5回 「伴奏の付け方」DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
京大 マイコンクラブ
?
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
京大 マイコンクラブ
?

C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?