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

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

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

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

Webパフォーマンス

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

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

Web Performance in Action: Building Faster Web Pages

Web Performance in Action: Building Faster Web Pages

  • 作者:Jeremy Wagner
  • 出版社/メーカー: Manning Publications
  • 発売日: 2017/01/16
  • メディア: ペーパーバック
追記

スケーラブル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)

  • 作者:Tom Barker
  • 出版社/メーカー: O'Reilly Media
  • 発売日: 2014/11/10
  • メディア: Kindle

Responsive Design High Performance (English Edition)

Responsive Design High Performance (English Edition)

  • 作者:Dewald Els
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2015/04/15
  • メディア: Kindle

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

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

  • 作者:Guy Podjarny
  • 出版社/メーカー: O'Reilly Media
  • 発売日: 2014/08/01
  • メディア: Kindle

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

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

  • 作者:Andrew B. King
  • 出版社/メーカー: O'Reilly Media
  • 発売日: 2013/03/06
  • メディア: Kindle

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

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

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

Performance Testing with JMeter - Second Edition (English Edition)

Performance Testing with JMeter - Second Edition (English Edition)

  • 作者:Bayo Erinle
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2015/05/01
  • メディア: Kindle

JMeter Cookbook (English Edition)

JMeter Cookbook (English Edition)

  • 作者:Bayo Erinle
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2014/10/29
  • メディア: Kindle

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

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

The Art of Capacity Planning: Scaling Web Resources in the Cloud

The Art of Capacity Planning: Scaling Web Resources in the Cloud


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

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

Systems Performance: Enterprise and the Cloud (English Edition)

Systems Performance: Enterprise and the Cloud (English Edition)

  • 作者:Brendan Gregg
  • 出版社/メーカー: Prentice Hall
  • 発売日: 2013/10/07
  • メディア: Kindle
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)

  • 作者:Chad R. Adams
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2015/03/30
  • メディア: Kindle

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)

  • 作者:Osama Oransa
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2014/06/23
  • メディア: Kindle

Clojure: High Performance JVM Programming

Clojure: High Performance JVM Programming


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)

[ISBN:1492055026:titile]

Mastering Python High Performance (English Edition)

Mastering Python High Performance (English Edition)

  • 作者:Fernando Doglio
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2015/09/09
  • メディア: Kindle

Python High Performance Programming (English Edition)

Python High Performance Programming (English Edition)

  • 作者:Gabriele Lanaro
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2013/12/23
  • メディア: Kindle

High Performance Django

High Performance Django

Writing High-performance .net Code

Writing High-performance .net Code

  • 作者:Ben Watson
  • 出版社/メーカー: Createspace Independent Pub
  • 発売日: 2014/07/23
  • メディア: ペーパーバック

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)

  • 作者:Matt Perdeck
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2010/10/13
  • メディア: Kindle

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

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

  • 作者:Colin McKinnon
  • 出版社/メーカー: Colin McKinnon
  • 発売日: 2015/03/02
  • メディア: Kindle

Learning PHP 7 High Performance (English Edition)

Learning PHP 7 High Performance (English Edition)

  • 作者:Altaf Hussain
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2016/04/25
  • メディア: Kindle

Clojure High Performance Programming (English Edition)

Clojure High Performance Programming (English Edition)

  • 作者:Shantanu Kumar
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2013/11/20
  • メディア: Kindle

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

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

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

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

  • 作者:福島 真太朗
  • 出版社/メーカー: ソシム
  • 発売日: 2014/09/24
  • メディア: 単行本
たぶん訳書ではなく,下の本とは無関係.

R High Performance Programming (English Edition)

R High Performance Programming (English Edition)

High Performance Android Apps: Improve Ratings with Speed, Optimizations, and Testing (English Edition)

High Performance Android Apps: Improve Ratings with Speed, Optimizations, and Testing (English Edition)

  • 作者:Doug Sillars
  • 出版社/メーカー: O'Reilly Media
  • 発売日: 2015/09/09
  • メディア: Kindle

Android High Performance Programming (English Edition)

Android High Performance Programming (English Edition)

RDBMS/SQL

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

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

MySQL即効クエリチューニング ThinkIT Books

MySQL即効クエリチューニング ThinkIT Books

MySQL 8 Query Performance Tuning: A Systematic Method for Improving Execution Speeds

MySQL 8 Query Performance Tuning: A Systematic Method for Improving Execution Speeds

  • 作者:Jesper Wisborg Krogh
  • 出版社/メーカー: Apress
  • 発売日: 2020/05/23
  • メディア: ペーパーバック

PostgreSQL 9.0 High Performance (English Edition)

PostgreSQL 9.0 High Performance (English Edition)

  • 作者:Gregory Smith
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2010/10/20
  • メディア: Kindle

MariaDB High Performance (English Edition)

MariaDB High Performance (English Edition)

  • 作者:Pierre MAVRO
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2014/09/23
  • メディア: Kindle

Troubleshooting Oracle Performance

Troubleshooting Oracle Performance

  • 作者:Christian Antognini
  • 出版社/メーカー: Apress
  • 発売日: 2014/06/02
  • メディア: ペーパーバック

マルチスレッド/平行化

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, 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)

  • 作者:Jan Palach
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2014/06/25
  • メディア: Kindle

Concurrency in C# Cookbook: Asynchronous, Parallel, and Multithreaded Programming

Concurrency in C# Cookbook: Asynchronous, Parallel, and Multithreaded Programming

  • 作者:Stephen Cleary
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2019/09/10
  • メディア: ペーパーバック

High Performance Spark: Best Practices for Scaling and Optimizing Apache Spark

High Performance Spark: Best Practices for Scaling and Optimizing Apache Spark

  • 作者:Holden Karau,Rachel Warren
  • 出版社/メーカー: O'Reilly Media
  • 発売日: 2017/06/16
  • メディア: ペーパーバック

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

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

Intel Xeon Phi Processor High Performance Programming: Knights Landing Edition

Intel Xeon Phi Processor High Performance Programming: Knights Landing Edition

  • 作者:Jim Jeffers
  • 出版社/メーカー: Morgan Kaufmann
  • 発売日: 2016/06/17
  • メディア: ペーパーバック

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)

上記の和訳.

スケーラビリティ

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

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)

Web Scalability for Startup Engineers (English Edition)

Web Scalability for Startup Engineers (English Edition)

最後に(まとめ?)

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

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


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

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

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

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

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


  • 7章 性能

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

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

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

いずれも下巻の方.


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

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

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

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

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

あなたが初心者なら,

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

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

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

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