Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
WEB時代の大富豪的プログラミング   のススメ    @chimerast   たけうちひでゆき
自己紹介• たけうちひでゆき• 肩書き: 永遠のNEET• Twitter: @chimerast
富豪的プログラミング• メモリや実行効率を気にしないでお気楽にプロ グラムを作る• 条件が変わる度にすべての計算や表示を行なう               by 増井俊之 (富豪化理論研究家)                          ...
memcachedの功罪• 猫も   子もmemcached• キャッシュが欲しい? じゃあmemcachedで。• そんな装備で大丈夫か?
じゃあ、何使えばいいの?
In-Process Cache
In-Process Cache• Map<String, T> cache   = new HashMap<String, T>();• var cache = {};• %cache = ();
In-Process Cacheの利点• ネットワークコストがかからない!• Serializationコストがかからない!•   注: ちゃんとキャッシュ用途で使うならLRUアルゴリズム等による破    棄を実装したモジュールを使うこと•  ...
データ数による速度の違い        Nop       LocalMemcached   RemoteMemcached     InProcessCache800ms600ms400ms200ms 0ms              1  ...
同時アクセス数による速度の違い         Nop       LocalMemcached       RemoteMemcached   InProcessCache7000ms5250ms3500ms1750ms  0ms      ...
同時アクセス数による速度の違い      単位: ms             1        10       20        50       100Nop                      0.518     2.243  ...
実験環境• Java: In-Memory CacheはGuavaのCacheBuilderを   使用• MacBook Pro  Retina, Mid 2012• 2.3 GHz Intel Core i7• 8 GB 1600 MHz ...
In-Process Cacheで       できないこと• 本当に大規模なキャッシュ(数TBとか)• セッションオブジェクトの共有• forkするようなcgiとかphpとか
まとめ• それほんとにmemcachedがマッチして るの?• メモリなんて最近安いんだから、 APサーバにメモリを64GBでも積んで In-Process Cacheを使えばいいじゃない
Upcoming SlideShare
Loading in …5
×

Web時代の大富豪的プログラミングのススメ

社内勉強会のLTで当たり前なことを大まじめに話してみました。

  • Login to see the comments

Web時代の大富豪的プログラミングのススメ

  1. 1. WEB時代の大富豪的プログラミング のススメ @chimerast たけうちひでゆき
  2. 2. 自己紹介• たけうちひでゆき• 肩書き: 永遠のNEET• Twitter: @chimerast
  3. 3. 富豪的プログラミング• メモリや実行効率を気にしないでお気楽にプロ グラムを作る• 条件が変わる度にすべての計算や表示を行なう by 増井俊之 (富豪化理論研究家) 1996/10/14 http://www.pitecan.com/fugo.html
  4. 4. memcachedの功罪• 猫も 子もmemcached• キャッシュが欲しい? じゃあmemcachedで。• そんな装備で大丈夫か?
  5. 5. じゃあ、何使えばいいの?
  6. 6. In-Process Cache
  7. 7. In-Process Cache• Map<String, T> cache = new HashMap<String, T>();• var cache = {};• %cache = ();
  8. 8. In-Process Cacheの利点• ネットワークコストがかからない!• Serializationコストがかからない!• 注: ちゃんとキャッシュ用途で使うならLRUアルゴリズム等による破 棄を実装したモジュールを使うこと• あとThread-safeかどうかも重要
  9. 9. データ数による速度の違い Nop LocalMemcached RemoteMemcached InProcessCache800ms600ms400ms200ms 0ms 1 10 100 1000 10000 get() size=64kb, loop=1000, thread=1
  10. 10. 同時アクセス数による速度の違い Nop LocalMemcached RemoteMemcached InProcessCache7000ms5250ms3500ms1750ms 0ms 1 10 20 50 100 get() size=64kb, count=10000, loop=1000
  11. 11. 同時アクセス数による速度の違い 単位: ms 1 10 20 50 100Nop 0.518 2.243 0.397 0.406 2.884LocalMemcachd 454.321 907.012 1582.445 3896.407 6626.150RemoteMemcachd 664.972 737.439 1168.138 2866.942 5642.771InProcessCache 5.846 63.923 99.005 168.975 180.256 get() size=64kb, count=10000, loop=1000
  12. 12. 実験環境• Java: In-Memory CacheはGuavaのCacheBuilderを 使用• MacBook Pro Retina, Mid 2012• 2.3 GHz Intel Core i7• 8 GB 1600 MHz DDR3• https://github.com/chimerast/cachebench
  13. 13. In-Process Cacheで できないこと• 本当に大規模なキャッシュ(数TBとか)• セッションオブジェクトの共有• forkするようなcgiとかphpとか
  14. 14. まとめ• それほんとにmemcachedがマッチして るの?• メモリなんて最近安いんだから、 APサーバにメモリを64GBでも積んで In-Process Cacheを使えばいいじゃない

×