タグ

Performanceとperformanceに関するWatsonのブックマーク (455)

  • Nginx、Webサーバを10倍高速化するノウハウを公開

    Nginxは10月5日(米国時間)、「10 Tips for 10x Performance - NGINX」において、Webサーバを高速化するためのノウハウを紹介した。高速化は対象となるシステムがどのような特性であるかを加味するとともに、状況に応じて実施する必要がある。予算の関係もあり実施できる高速化にも限界があるが、さまざまな側面から高速化する方法が紹介されており、チューニングのための導入資料として役に立つはずだ。 紹介されている主なノウハウは次のとおり。 ロードバランシングとリバース・プロキシサーバの導入 ダイナミック・キャッシュの導入とスタティック・コンテンツの活用 適切なメディアファイルの使用(写真にはJPEG、グラフィックにはPNG、動画にはMPEG-4、音楽にはMP3といったもの) HTMLやテキストデータの圧縮機能の有効化 TLS/SSLの最適化 HTTP/2やSPDYの活

  • Optimizing Android bytecode with ReDex

    As more and more people around the world start logging on to Facebook, we have an increasingly large responsibility to keep things fast. This is especially true in developing areas, where devices stay in the market longer and people have longer upgrade cycles for new devices. We want to make sure we look into possible opportunities for performance improvements across all of our major mobile platfo

    Optimizing Android bytecode with ReDex
  • 10 Tips for 10x Application Performance

    Improving web application performance is more critical than ever. The share of economic activity that’s online is growing; more than 5% of the developed world’s economy is now on the Internet (see Resources for Internet Statistics below). And our always‑on, hyper‑connected modern world means that user expectations are higher than ever. If your site does not respond instantly, or if your app does n

    10 Tips for 10x Application Performance
  • Counting Objects

    EngineeringCounting ObjectsThe Systems Team at GitHub works to solve complex bugs and performance bottlenecks at the lowest levels of our infrastructure. Over the past two years we've undertaken a major project… The Systems Team at GitHub works to solve complex bugs and performance bottlenecks at the lowest levels of our infrastructure. Over the past two years we’ve undertaken a major project to i

    Counting Objects
  • Railsアプリを66%スピードアップ ― Railsキャッシュの完全ガイド | POSTD

    (訳注:2016/3/2、頂いた翻訳フィードバックをもとに記事を修正いたしました。) Railsアプリでのキャッシングは、「たまに夕を一緒にするけれど、当はもっと頻繁に一緒にいるべき友達」に少し似ています。パフォーマンスをまじめに考えるRailsアプリのほぼ全てで、もっとキャッシングを使えるはずですが、ほとんどのRailsアプリでは、完全にキャッシングを避けています。それでも普通は、Railsで高速なサーバ応答を達成するための唯一の道は、キャッシングの知的な利用なのです。約250msの応答時間を、簡単に50~100msに高速化できます。 定義についての注意 ― この記事は、アプリケーション層のキャッシングのみを対象としています。HTTPキャッシング(これは全く別の難物で、あなたのアプリケーションに実装する必要はありません)は、別の機会で扱いましょう。 するべきキャッシングをしない理由

    Railsアプリを66%スピードアップ ― Railsキャッシュの完全ガイド | POSTD
  • jruby9000 が ruby2.2.3 よりも3倍以上速いこともある。

    以前、 http://qiita.com/Nabetani/items/9776d99d09476d07c9e2 と http://qiita.com/Nabetani/items/47d357cc7f80f5c42f0d でベンチマークの記事を書いたんだけど、2.2.3 とか jruby9000 が出ているのでまた勝手なベンチマークをとってみた。 当初ここに書いた記事では JRuby が Java7 になっていたので、Java8で測りなおして追記した。 「3倍以上」より「4倍以上」が適切なようなので、タイトルも変えてみた。 まずはグラフ。 横軸は時間なので、長いほうが遅い。 simple_lambda の方は、jruby がやけに頑張っている。 jじゃないrubyでは、新しくなるほど速くなっていて、開発者の皆様ありがとうございますという感じ。 対照的に、complex_string では

    jruby9000 が ruby2.2.3 よりも3倍以上速いこともある。
  • Linux サーバの基本的なシステム性能とOSジッタを計測するためのツールキット | FAworks

    Jean Dagenaisは、mechanical-sympathyのスレッドで、Gil Teneの記事「Linux OSのジッタを体系的に低減する魔術」(訳注:日語版)へのresponseとして、素晴らしい内容の記事を投稿しました。ジッタの問題を調査するために役立つツールが満載です。出典が不完全であることをお詫びします。Jeanのことを示すウェブページを確認できませんでした。 「Linuxのジッタを見つけるための体系的な方法」で得られた素晴らしい情報を補うためにツールキットを作成しました。現在および今後のトレーディング・プラットフォームを評価するためにそれを使用しています。 皆様にとっても役に立つかもしれませんので、含まれているツールと、それらのソースコードや使用方法に関する情報を得るためのURLをここに紹介します。私はソースコードや関連するブログ記事を読むことにより多くのことを学んで

    Linux サーバの基本的なシステム性能とOSジッタを計測するためのツールキット | FAworks
  • 高速なWebサーバアプリケーションを構築するための6つの経験則 | POSTD

    この記事では、Webアプリケーション(特にバックエンド部分)を構築するときにハイレベルなパフォーマンスを達成しようとするなら考慮するべき、最も一般的な原則のいくつかを取り上げたいと思います。私は、自分自身の経験から、主にPHPの世界で使われるいくつかの例、設計パターン、慣例やツールについて書きますが、ここで説明する概念は、どんな言語やフレームワークにも必ず当てはまると思います。 手短に言うと、基ルールは次の6つです。 ルール1 . 時期尚早な最適化を回避する ルール2 . 最小限の作業で問題を解決する ルール3 . 今すぐやらなくてもいい作業は延期する ルール4 . 使えるときはキャッシュを使う ルール5 . リレーショナルデータベースのN+1問題を理解し、回避する ルール6 . 可能ならアプリケーションに水平スケーラビリティをもたせる ルール1: 時期尚早な最適化を回避する Donal

    高速なWebサーバアプリケーションを構築するための6つの経験則 | POSTD
  • Pythonにおけるプロファイリング ― コードの高速化のために | POSTD

    ここHumanGeo社ではPythonを使うことが多く、それは極上の楽しみでもあります。美しく機能的なコードを短時間で記述するのにPythonはうってつけで、私個人にとっても一押しの言語です。仕事に限らずプライベートでも使っています。そんな素晴らしいPythonですが、欠点がないわけではありません。それはあまりにも遅いことです。幸いPythonには、コードをプロファイリングするための優れたツールがいくつかあるので、コードの美しさと速さを共存させることができます。 HumanGeoで働き出した頃、実行に長時間を要すプログラムのボトルネックを探り、何とかしてそれを速くさせるという仕事を担当しました。その内容は、 cProfile や PyCallGraph ( ソース )、はたまたPyPy(高速なPython用代替インタプリタ)などの各種ツールを使って、プログラムを最適化するためのベストな方法

    Pythonにおけるプロファイリング ― コードの高速化のために | POSTD
  • ゲーム パフォーマンス: データ指向プログラミング

    .app 1 .dev 1 #11WeeksOfAndroid 13 #11WeeksOfAndroid Android TV 1 #Android11 3 #DevFest16 1 #DevFest17 1 #DevFest18 1 #DevFest19 1 #DevFest20 1 #DevFest21 1 #DevFest22 1 #DevFest23 1 #hack4jp 3 11 weeks of Android 2 A MESSAGE FROM OUR CEO 1 A/B Testing 1 A4A 4 Accelerator 6 Accessibility 1 accuracy 1 Actions on Google 16 Activation Atlas 1 address validation API 1 Addy Osmani 1 ADK 2 AdMob 32 Ads

    ゲーム パフォーマンス: データ指向プログラミング
  • How We Beat C++ STL Binary Search

    At Realm, we’re always looking for ways to optimize for speed. This is the story of how we developed our own fast binary search function, with an execution time on average 24% faster than the C++ STL. Why Binary Search? Realm stores data in binary tree structures. For example, suppose Realm was holding objects with the following IDs in a linked list: If you wanted to find the object with ID equale

    How We Beat C++ STL Binary Search
  • fplutil: android_ndk_perf

  • Swift実行ファイルを逆アセンブルして、最適化具合を正確に把握する方法 - Qiita

    SwiftはOptimization Levelによって顕著にパフォーマンスに差が出ます。 参考: Apples to apples, Part II · Jesse Squires また、Dynamic Dispatchでの呼び出しもオーバーヘッドになります。 参考: Swiftのfinal・private・Whole Module Optimizationを理解しDynamic Dispatchを減らして、パフォーマンスを向上する - Qiita ドキュメントなど読み解けば「どういう記述をすればどうコンパイルされるか」は大体予測付きますが、やはり実際にその予測通りになっているかは確認しておきたい時があります。 特にロガーなどグローバルに呼び出されるものの場合、そういう確認大事だと思っています。 (この記事もロガーの検証が元々の目的で、そのために調べてまとめています。ロガーについても記事

    Swift実行ファイルを逆アセンブルして、最適化具合を正確に把握する方法 - Qiita
  • Speed Up Your Rails App by 66% - The Complete Guide to Rails Caching

    Speed Up Your Rails App by 66% - The Complete Guide to Rails Caching Caching in a Rails app is a little bit like that one friend you sometimes have around for dinner, but should really have around more often. Nearly every Rails app that's serious about performance could use more caching, but most Rails apps eschew it entirely! And yet, intelligent use of caching is usually the only path to achievi

  • Atomの重要なプリミティブの最適化 | POSTD

    これまで数カ月にわたり、私たちはAtomのパフォーマンスの改善に取り組んできました。その結果、最適化するための課題として特に興味深いのが マーカ という構造体だと分かりました。マーカはバッファの内容が変更されても、バッファの論理的な領域を追跡することができます。例えば、以下の図で緑色のハイライトがかかった部分のマーカは、文字列を書き換えたとしても同じ領域に残り続けます。 マーカは、Atomの機能を幅広くサポートする基的なプリミティブです。検索および置換を行う場合には、マーカを使うことで 検索結果のハイライト表示 ができます。スニペットの場合も、文字列を書き換える際にマーカを使い、 タブストップで移動する位置 を追跡することができます。さらにはスペルチェックの場合でも、マーカを使って スペルミスのある単語を抽出 したり、その単語を書き換える際の再チェックをしたりすることもできます。そもそも

    Atomの重要なプリミティブの最適化 | POSTD
  • Railsパフォーマンス基本のキ

    Railsのパフォーマンスについてよくある問題とそれに対して戦いを挑むために必要なもの。

    Railsパフォーマンス基本のキ
  • プロファイラは本当に必須か?―パフォーマンスについて考える | POSTD

    最近、2つの出来事があり、私が行っているパフォーマンスへのアプローチ方法は、あまり広く知られていないようだと感じさせられました。 1つ目の出来事は、 redditでBufferBuilderを発表 した際に、初期のコメントで次のような質問をもらったことです。「Haskellを実行する時に、プロファイラを利用してコードのどの部分で処理が遅くなっているのか確認しましたか?」というものでした。もっともな質問ですが、私の答えは”ノー”でした。プロファイラは利用していません。なぜなら、Haskellのプロファイラで確認できる段階では既に遅すぎるからです。私はバッファを構築する効率的な方法を既に知っていました。境界チェックをしてから、保存(シングルバイトの場合)または複製(バイト列の場合)をするやり方です。これ以上の命令は意味がありません。ですから、BufferBuilderの開発にあたって最初にやっ

    プロファイラは本当に必須か?―パフォーマンスについて考える | POSTD
  • Onigmoを最大49%高速化した話 | κeenのHappy Hacκing Blog

    κeenです。Rubyでも使われてる高速な正規表現エンジン、Onigmo(鬼雲)を高速化したのでその話を。 先日、正規表現技術入門を読んだというエントリの中で ところでに載ってた鬼雲のコードはDT(編注: Direct Threaded)にしてなかったけど簡単のためなのかな?あるいは厳格にC89に準拠するため?picrinみたくプリプロセッサで分岐すれば使えるのに。 と書いたところ、鬼雲の作者、K.Takataさんから @k_takata 「picrinみたくプリプロセッサで分岐すれば使えるのに。」これも知らなかった。 — K.Takata (@k_takata) 2015, 5月 11 という反応を頂きました。そしてイシューにも乗ったので言い出しっぺとして実装してみました。こちらのプルリクです。 Direct Threaded VM自体の解説はRubyist Magazineに載ってい

    Onigmoを最大49%高速化した話 | κeenのHappy Hacκing Blog
  • Do not Measure the Weather

    Java VM V8 Dart VM complexity ChaCha20 function getBlock(buffer) { var x = new Uint32Array(16); for (var i = 16; i--;) x[i] = input[i]; for (var i = 20; i > 0; i -= 2) { quarterRound(x, 0, 4, 8,12); quarterRound(x, 1, 5, 9,13); quarterRound(x, 2, 6,10,14); quarterRound(x, 3, 7,11,15); quarterRound(x, 0, 5,10,15); quarterRound(x, 1, 6,11,12); quarterRound(x, 2, 7, 8,13); quarterRound(x, 3, 4, 9,14)

  • JavaのString生成方法がボトルネックになっていた話 - WAF Tech Blog | クラウド型 WAFサービス Scutum

    はじめに 先日、私たちが開発しているクラウド型WAFサービス、Scutum(スキュータム)において、予想していなかった箇所の修正によってサーバの負荷が大幅に減るということがありました。原因はこのエントリのタイトルにもあるように、Stringクラスのインスタンスを生成する際の方法にありました。 Stringクラスのコンストラクタとcharset Stringクラスにはいくつかのコンストラクタが用意されています。我々が使っていたのはString(byte[] bytes, String charsetName)です。2つめの引数で、"MS932"や"UTF-8"のような文字集合(以下charset)を明示的に指定するものです。 ScutumのようなWAF(Web Application Firewall)は通常のウェブアプリケーションとは異なり、起動している間にさまざまなcharsetを扱うこ

    JavaのString生成方法がボトルネックになっていた話 - WAF Tech Blog | クラウド型 WAFサービス Scutum