タグ

2015年4月14日のブックマーク (4件)

  • ActiveRecordを速くしたいだけの人生だった - Qiita

    Help us understand the problem. What is going on with this article? Rails3.2からRails4.2に上げたらActiveRecordが遅くなったので、どうやって調査して、どのように対処したかを語ってみたい。 とても長いので、ダルい人は最初と最後だけ読めばよいです。 TL;DR 環境: Ruby 2.1.5 ARオブジェクトを大量に(ざっくり750kくらい)loadするバッチ処理 3.2系での実行時間は約480sec、 4.2系では約2900sec 約6倍の性能劣化 原因: preloadで性能劣化してた CollectionProxyの生成周りで遅くなってた Rails4からARオブジェクトの1attribute毎にObject生成するので遅い GCの時間も増えた 調査方法: Githubのcommit、Issueを

    ActiveRecordを速くしたいだけの人生だった - Qiita
  • MacBookはダメパソコン?神パソコン?

    2010年、アップルが最初のiPadを投入する際、当時のスティーブ・ジョブズCEOは、マイクロソフトのWindowsが席巻していた低価格なウェブブラウジング端末「ネットブック」への"返歌"だとプレゼンテーションした。 つまり、多様なアプリケーションがクラウドにあふれ、より低価格でシンプルなインターネット端末が求められていることは確かだが、単に性能が低いだけのパソコンではダメだと断じてみせた。その後、iPadが新しい商品カテゴリを築き、ネットブックが衰退したことを考えれば、アップルの判断は正しかったことになる。 しかし、一方でアップルは、iPadの適応領域を広げることには失敗した。iLifeやiWorkをiPadに移植し、よりクリエイティブな(パソコンに近い)アプリケーションも、タッチパネルでシンプルに使いこなせるように提案してきたが、パソコンとの距離を埋められるほど両者の距離は近づいていな

    MacBookはダメパソコン?神パソコン?
  • Rubyで任意のメソッドをメモ化する - ぬいぐるみライフ?

    Rubyベストプラクティスの5-4より.メタプログラミングの例として面白かったのでまとめてみる. メモ化とは メモ化とは,引数に対するメソッドの戻り値を保存しておき,再び同じ引数でメソッドが呼び出された時にその値を再利用することにより,同じ計算を何度もすることを防ぐ最適化手法のひとつ.全ての引数に対しメソッドの結果が不変の場合(同じ引数で何度呼び出しても毎回同じ戻り値を返す場合),メソッドをメモ化することができる. 以下はフィボナッチ数を再帰で計算するメソッドfibの例. def fib(n) (0..1).include?(n) ? n : fib(n-2) + fib(n-1); end この実装の場合,例えばfib(n)はn = 3で5回,n = 4で9回というように,nの値が大きくなるにつれて再帰呼び出し回数がどんどん増え,実行時間が爆発的に増大してしまう.私の環境だとfib(30

    Rubyで任意のメソッドをメモ化する - ぬいぐるみライフ?
  • Rubyアソシエーション: テスト

    ここではRubyで記述されたコードに対するテスト方法の概要について説明します。Rubyには、ユニットテストをしやすくするフレームワーク(ライブラリ)が提供されています。通常は、個々のモジュールやメソッドなど小さな単位で十分なユニットテストを行って検証し、結合テストへと進みます。 提供されるフレームワークは、「テスト駆動開発(Test Driven Development:TDD)」や「振舞駆動開発(Behaviour Driven Development:BDD)」という思想がベースになっています。テスト駆動開発とは、プログラム開発手法の一つで、プログラムに必要な各機能について、最初にテストコードを書きそれが失敗することを確認し(テストファースト)、そのテストが成功するように必要最低限の実装を行った後、プログラムの振る舞いを変えないようにコードを洗練(リファクタリング)していく方法です。こ