Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
パフォーマンス最適化
Search
まりも
September 24, 2024
Programming
34
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
パフォーマンス最適化
プログラマーは常にスピードを求めてしまうものですが、がむしゃらにそれを追い求めることはよい結果を出さないことが多いです。適切なパフォーマンス最適化について解説します。
まりも
September 24, 2024
More Decks by まりも
See All by まりも
オブジェクトモデルと関係モデルの設計
hrmstrsmgs
0
64
メンタルモデルから見るオブジェクト設計
hrmstrsmgs
1
430
技術的負債
hrmstrsmgs
1
460
よい設計のプログラムを作るには
hrmstrsmgs
0
140
歴史から理解するJavaScript
hrmstrsmgs
0
110
論理的な考え方
hrmstrsmgs
0
120
論理的な話し合いはなぜ必要か
hrmstrsmgs
0
85
腕のある技術者はなぜ
hrmstrsmgs
0
160
疑似乱数の生成
hrmstrsmgs
0
81
Other Decks in Programming
See All in Programming
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.6k
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
260
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
550
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
480
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
620
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
330
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
760
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
280
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
22
22k
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
620
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
710
Code Review Best Practice
trishagee
74
20k
Done Done
chrislema
187
17k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
770
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
540
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Un-Boring Meetings
codingconduct
0
450
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を抜いたそうで す。
予測できません