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
パフォーマンス最適化
Search
まりも
September 24, 2024
Programming
31
0
Share
パフォーマンス最適化
プログラマーは常にスピードを求めてしまうものですが、がむしゃらにそれを追い求めることはよい結果を出さないことが多いです。適切なパフォーマンス最適化について解説します。
まりも
September 24, 2024
More Decks by まりも
See All by まりも
メンタルモデルから見るオブジェクト設計
hrmstrsmgs
0
280
技術的負債
hrmstrsmgs
0
310
よい設計のプログラムを作るには
hrmstrsmgs
0
93
歴史から理解するJavaScript
hrmstrsmgs
0
80
論理的な考え方
hrmstrsmgs
0
86
論理的な話し合いはなぜ必要か
hrmstrsmgs
0
58
腕のある技術者はなぜ
hrmstrsmgs
0
110
疑似乱数の生成
hrmstrsmgs
0
56
構造化プログラミング
hrmstrsmgs
0
190
Other Decks in Programming
See All in Programming
運転動画を検索可能にする〜Cosmos-Embed1とDatabricks Vector Searchで〜/cosmos-embed1-databricks-vector-search
studio_graph
1
630
Kingdom of the Machine
yui_knk
2
1.3k
2026-04-15 Spring IO - I Can See Clearly Now
jonatan_ivanov
1
160
[RubyKaigi 2026] Require Hooks
palkan
1
280
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
2.6k
(Re)make Regexp in Ruby: Democratizing internals for the JIT
makenowjust
3
970
書き換えて学ぶTemporal #fukts
pirosikick
2
330
なぜあなたのコードには「コシ」がないのか?〜AI時代に問う、最後まで美味しい設計と戦略〜 #phpconkagawa / phpconkagawa2026
shogogg
0
110
AWSコミュニティ活動は顧客のクラウド推進に効くのか / Do AWS community activities help customers adopt the cloud?
seike460
PRO
0
160
Explore CoroutineScope
tomoeng11
0
150
PicoRuby for IoT: Connecting to the Cloud with MQTT
yuuu
2
730
過去のレビュー知見をSkillsで資産化した話
pkshadeck
PRO
0
270
Featured
See All Featured
Abbi's Birthday
coloredviolet
2
7.4k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
19
Evolving SEO for Evolving Search Engines
ryanjones
0
190
Testing 201, or: Great Expectations
jmmastey
46
8.1k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
280
Skip the Path - Find Your Career Trail
mkilby
1
110
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Marketing to machines
jonoalderson
1
5.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.7k
Design in an AI World
tapps
1
210
Transcript
パフォーマンス最適化
最適化についての格言 早すぎる最適化は諸悪の根 源である。 •ドナルド・クヌース
最適化についての格言 細かい効率のことは忘れて、時間の97%につ いて考えよう。時期尚早な最適化は諸悪の根 源だ。それでも残り3%についても機会を逃す べきではない • ドナルド・クヌース
最適化についての格言 プログラム最適化の第一法則: 最適化するな。 プログラム最適化の第二法則(上級者限定): まだす るな。 • Michael A. Jackson
最適化についての格言 個々の操作を特定の順に実行させることは非常に興味深く奇妙な問題である。その上で全てを入力する余裕はない。どの ような計算でもプロセスの遷移のための多種多様な配置が可能であり、様々な考慮の上でそれを選択しなければならない。 基本的な目的は計算を完了するまでの時間を最小にする配置を選択することである • Ada Byron‘s notes on the
analytical engine 1842 情報処理における罪の多くは(必ずしも達成されることのない)効率の名においてなされる。そこには盲目の愚かさも含まれ る • W.A. Wulf ボトルネックは思いもよらない場所に存在するので、ボトルネックの箇所を特定するまで性能最適化(ハック)してはいけな い • ロブ・パイク
じゃあどうするか 体系的に立ち向 かう
じゃあどうするか リファクタリングして同じ処理は2度書かないコード にする 実運用と同じ環境、データ数で速度測定 遅い部分を特定し、そこだけ直す
パレートの法則 プログラムの処理に かかる時間の80% はコード全体の20% の部分が占める。
そんなこと言っても速度は 大事だから常に気を付け ないと その方法だと遅くなるから 止めろと言ってます 読みにくいコー ドの全体を見て チューニングと かあまり効果が 出ません
パフォーマンスの予測 実測せずに予測はできません。 • ロブ・パイクもクヌースも予測できない と言っているのに、誰ができると言った ら信じられるというのか。
Q1 以下のどちらが効率的に動くでしょうか?(言語はC#。Javaでも大体同じ。) var str = "あいうえお" + "かきくけこ" + "さしすせそ"
+ "たちつてと" + "なにぬねの"; var builder = new StringBuilder(); builder.Append("あいうえお"); builder.Append("かきくけこ"); builder.Append("さしすせそ"); builder.Append("たちつてと"); builder.Append("なにぬねの"); var str = builder.ToString();
A1 Aが速い
Q1 以下のどちらが効率的に動くでしょうか?(言語はC#。Javaでも大体同じ。) var result = ""; foreach (var str in
strArray) { result += str; } var builder = new StringBuilder(); foreach (var str in strArray) { builder.Append(str); } var result = builder.ToString();
A2 strArray.length <= 7の時はAが速い
Q3 文字列を複雑に結合してHTMLを作る速度が速いのはどの言語での実装でしょう? C Java JavaScript
A3 Chromeあたりのエンジンを使え ばJavaScriptがCを抜いたそうで す。
予測できません