パフォーマンス書籍メモ(一応Web系)

ニトリの一件*1 で刺激されたのでついでにメモってみた.基本的に玉石混淆なのでそのつもりで.

現実にはそれ以前の問題のことの方が多いしな−.「アルゴリズムとデータ構造」を勉強したことも無い,ハッシュテーブルもNP完全も知りませんな人が相手だと,この手のチューニングも焼け石に水で炎上は止まらない.

そういう相手だと,まずは「遅くないコードの書きかた」を教えた方がいい.「早いコードの書き方」を教えるのは,その後でも十分だ.

Webパフォーマンス

Webサイトパフォーマンス実践入門 高速なWebページを作りたいあなたに

Webサイトパフォーマンス実践入門 高速なWebページを作りたいあなたに

Web Performance in Action: Building Faster Web Pages

Web Performance in Action: Building Faster Web Pages

追記

ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール

ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール

続・ハイパフォーマンスWebサイト ―ウェブ高速化のベストプラクティス

続・ハイパフォーマンスWebサイト ―ウェブ高速化のベストプラクティス

ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化

ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化

スケーラブルWebサイト

スケーラブルWebサイト

パフォーマンス向上のためのデザイン設計

パフォーマンス向上のためのデザイン設計

http://www.amazon.co.jp/dp/4873117550?tag=bloofjav-22
http://www.oreilly.co.jp/books/9784873117553/
原書「Designing for Performance: Weighing Aesthetics and Speed (English Edition)」.当初パフォーマンス本とは気づかなかった.

High Performance Responsive Design: Building Faster Sites Across Devices (English Edition)

High Performance Responsive Design: Building Faster Sites Across Devices (English Edition)

Responsive Design High Performance (English Edition)

Responsive Design High Performance (English Edition)

Responsive & Fast: Implementing High-Performance Responsive Design (English Edition)

Responsive & Fast: Implementing High-Performance Responsive Design (English Edition)

Website Optimization: Speed, Search Engine & Conversion Rate Secrets (English Edition)

Website Optimization: Speed, Search Engine & Conversion Rate Secrets (English Edition)

Web Performance Tuning: Speeding up the Web (English Edition)

Web Performance Tuning: Speeding up the Web (English Edition)

ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE)

ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE)

パフォーマンステスト/計画

キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置

キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置

Performance Testing with JMeter - Second Edition (English Edition)

Performance Testing with JMeter - Second Edition (English Edition)

JMeter Cookbook (English Edition)

JMeter Cookbook (English Edition)

アート・オブ・アプリケーション パフォーマンステスト (Theory in practice)

アート・オブ・アプリケーション パフォーマンステスト (Theory in practice)

The Art of Capacity Planning: Scaling Web Resources

The Art of Capacity Planning: Scaling Web Resources


詳解 システム・パフォーマンス

詳解 システム・パフォーマンス

Systems Performance: Enterprise and the Cloud (English Edition)

Systems Performance: Enterprise and the Cloud (English Edition)

http://www.oreilly.co.jp/books/9784873117904/

言語/プログラミング

Optimized C++ ―最適化、高速化のためのプログラミングテクニック

Optimized C++ ―最適化、高速化のためのプログラミングテクニック

http://www.oreilly.co.jp/books/9784873117928/

ハイパフォーマンスJavaScript

ハイパフォーマンスJavaScript

Mastering JavaScript High Performance (English Edition)

Mastering JavaScript High Performance (English Edition)

Javaパフォーマンス

Javaパフォーマンス

Java Performance: The Definitive Guide: Getting the Most Out of Your Code (English Edition)

Java Performance (Java Series) (English Edition)

Java Performance (Java Series) (English Edition)

書名が紛らわしいが上記二冊は別の書籍なので注意.

Java Performance Companion (English Edition)

Java Performance Companion (English Edition)

上記の"Java Performance"の続編,或いは補遺的な書籍のようだ.

Java EE 7 Performance Tuning and Optimization (English Edition)

Java EE 7 Performance Tuning and Optimization (English Edition)

Ruby Performance Optimization: Why Ruby is Slow, and How to Fix It

Ruby Performance Optimization: Why Ruby is Slow, and How to Fix It

ハイパフォーマンスPython

ハイパフォーマンスPython

High Performance Python: Practical Performant Programming for Humans (English Edition)

Mastering Python High Performance (English Edition)

Mastering Python High Performance (English Edition)

Python High Performance Programming (English Edition)

Python High Performance Programming (English Edition)

High Performance Django

High Performance Django

C#プログラマのための.NETアプリケーション最適化技法

C#プログラマのための.NETアプリケーション最適化技法

Learning .NET High-performance Programming (English Edition)

Learning .NET High-performance Programming (English Edition)

ASP.NET Site Performance Secrets (English Edition)

ASP.NET Site Performance Secrets (English Edition)

Linux, Apache, MySQL, PHP Performance End to End (English Edition)

Linux, Apache, MySQL, PHP Performance End to End (English Edition)

Learning PHP 7 High Performance (English Edition)

Learning PHP 7 High Performance (English Edition)

Clojure High Performance Programming (English Edition)

Clojure High Performance Programming (English Edition)

High Performance Drupal: Fast and Scalable Designs (English Edition)

High Performance Drupal: Fast and Scalable Designs (English Edition)

Rによるハイパフォーマンスコンピューティング

Rによるハイパフォーマンスコンピューティング

たぶん訳書ではなく,下の本とは無関係.

R High Performance Programming (English Edition)

R High Performance Programming (English Edition)

Android High Performance Programming (English Edition)

Android High Performance Programming (English Edition)

RDBMS/SQL

実践ハイパフォーマンスMySQL 第3版

実践ハイパフォーマンスMySQL 第3版

PostgreSQL 9.0 High Performance (English Edition)

PostgreSQL 9.0 High Performance (English Edition)

MariaDB High Performance (English Edition)

MariaDB High Performance (English Edition)

Oracle Database 12c Performance Tuning Recipes: A Problem-Solution Approach (Expert's Voice in Oracle)

Oracle Database 12c Performance Tuning Recipes: A Problem-Solution Approach (Expert's Voice in Oracle)

Troubleshooting Oracle Performance

Troubleshooting Oracle Performance

アート・オブ・SQL ―パフォーマンスを引き出すSQLプログラミング手法 (Theory in practice)

アート・オブ・SQL ―パフォーマンスを引き出すSQLプログラミング手法 (Theory in practice)

マルチスレッド/平行化

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

Java Concurrency in Practice: JAVA CONCURRENCY PRACT _p1 (English Edition)

Java Concurrency in Practice: JAVA CONCURRENCY PRACT _p1 (English Edition)

Java向けConcurrent Programmingでは名著の類だが,和訳は現在絶版.

The Art of Multiprocessor Programming 並行プログラミングの原理から実践まで

The Art of Multiprocessor Programming 並行プログラミングの原理から実践まで

The Art of Multiprocessor Programming, Revised Reprint (English Edition)

The Art of Multiprocessor Programming, Revised Reprint (English Edition)

上級者向けなので注意.

Parallel Programming with Python (English Edition)

Parallel Programming with Python (English Edition)

Concurrency in C# Cookbook: Asynchronous, Parallel, and Multithreaded Programming (English Edition)

Concurrency in C# Cookbook: Asynchronous, Parallel, and Multithreaded Programming (English Edition)

High Performance Parallelism Pearls Volume One: Multicore and Many-core Programming Approaches (English Edition)

High Performance Parallelism Pearls Volume One: Multicore and Many-core Programming Approaches (English Edition)

High Performance Parallelism Pearls Volume Two: Multicore and Many-core Programming Approaches (English Edition)

High Performance Parallelism Pearls Volume Two: Multicore and Many-core Programming Approaches (English Edition)

インテル Xeon Phi プロセッサーハイパフォーマンス・プログラミング

インテル Xeon Phi プロセッサーハイパフォーマンス・プログラミング

  • 作者: ジム・ジェファース,すがわらきよふみ,堀越将司
  • 出版社/メーカー: カットシステム
  • 発売日: 2017/03/01
  • メディア: 単行本
  • この商品を含むブログを見る

Intel Xeon Phi Processor High Performance Programming: Knights Landing Edition

Intel Xeon Phi Processor High Performance Programming: Knights Landing Edition

Intel Xeon Phi Coprocessor High Performance Programming (English Edition)

Intel Xeon Phi Coprocessor High Performance Programming (English Edition)

旧版.

CUDA by Example: An Introduction to General-Purpose GPU Programming, Portable Documents (English Edition)

CUDA by Example: An Introduction to General-Purpose GPU Programming, Portable Documents (English Edition)

Professional CUDA C Programming (English Edition)

Professional CUDA C Programming (English Edition)

CUDA C プロフェッショナル プログラミング impress top gearシリーズ

CUDA C プロフェッショナル プログラミング impress top gearシリーズ

上記の和訳.

スケーラビリティ

スケーラビリティの技 ?Webサイト構築・運営の極意

スケーラビリティの技 ?Webサイト構築・運営の極意

下の本の初版の和訳だと思う.タイトルが違うから気付かなかった.

The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise (English Edition)

The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise (English Edition)

Scalability Rules: Principles for Scaling Web Sites (English Edition)

Scalability Rules: Principles for Scaling Web Sites (English Edition)

Scalable Internet Architectures: SCALABLE INT ARCH _p1 (Developer's Library) (English Edition)

Scalable Internet Architectures: SCALABLE INT ARCH _p1 (Developer's Library) (English Edition)

最後に(まとめ?)

こういう「パフォーマンス」の本でなくともパフォーマンスについて説明されてる場合は少なくない.たとえば

新・門外不出のOracle現場ワザ ?エキスパートが明かす運用・管理の極意

新・門外不出のOracle現場ワザ ?エキスパートが明かす運用・管理の極意

みたいな本にもSQLチューニングの話が載ってたりする.


ましてプログラミングの世界においては,そんな小手先のチューニングよりアルゴリズムとデータ構造の違いが如実に物を言うことの方が多いだろう.

アルゴリズムイントロダクション 第3版 第1巻: 基礎・ソート・データ構造・数学 (世界標準MIT教科書)
アルゴリズムイントロダクション 第3版 第2巻: 高度な設計と解析手法・高度なデータ構造・グラフアルゴリズム (世界標準MIT教科書)

アルゴリズムクイックリファレンス
http://d.hatena.ne.jp/JavaBlack/20110923/p1

計算量の少ない真っ当なアルゴリズムを採用し,

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

且つ可読性の高いコードを記述することが,結局はトータルでの性能UPに繋がると考えてよい.*2


プログラミング作法 (アスキードワンゴ)

プログラミング作法 (アスキードワンゴ)

  • 7章 性能

基本的なことのはず.知らない人は必見だけど,ベテランなら知ってることばかり.

基本的なテクニックに関する説明がある.ある意味で基本的すぎるのでコンピュータサイエンスを学んだ人なら知ってることも多いが,大学でCSを学んでなくて基礎が欠けてる人は一通り目を通しておいた方がいいと思う.

  • 25章 コードチューニング戦略
  • 26章 コードチューニングテクニック

いずれも下巻の方.


本当にハードに依存したレベルで最適化をするならば,アーキテクチャに関する知識も一通りはあった方がいい.が,必用じゃないことも多い.ボトルネックがそことは限らないからだ.

コンピュータの構成と設計 第5版 上・下電子合本版

コンピュータの構成と設計 第5版 上・下電子合本版

http://ec.nikkeibp.co.jp/nsp/dl/09842/index.shtml

  • 4.12 高速化:命令レベル並列性を応用した行列の乗算
  • 6 クライアントからクラウドまでの並列プロセッサ

5章の記憶階層も基礎知識としては必用.むしろ常識.

ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ 第5版

ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ 第5版

全体に関係あると言えばある.ここまで必用となることも滅多にないけれど.

あなたが初心者なら,

  • 3.2 命令レベル並列性技術のためのコンパイラの基本.
  • 3.12 マルチスレッディング:単一プロセッサス ループット改善のためのスレッドレベル並列性抽出
  • 4.5 ループレベル並列性の検出と増強

このあたりを手がかりに,「こんなこともやってるのか」「うむ,わからん」という感想を持ってみるのが良いのでは.

*1:http://d.hatena.ne.jp/JavaBlack/20150623/p1

*2:そういう意味では,極論すればパフォーマンスチューニングは邪道なのだ.