パーシャルのレンダリングには実際にどのくらいの時間がかかりますか?
大きなRailsビューを小さなパーシャルに分割することを心配している人から聞いたことがあります。パーシャルのレンダリングには実際にどれくらいの時間がかかりますか?パーシャルを呼び出すことによるパフォーマンスへの影響は、コードの可読性の利点を上回りますか?
いくつかの数値を実行して、単純な部分レンダリングとインラインレンダリングの比較例を示したので、後でトレードオフについて説明します。これは、新しいRailsアプリ(config.cache_classes = true
を使用)でベンチマークに使用したコードです。 ):
<% require 'benchmark'
Benchmark.bmbm do |x|
x.report "inline" do
10000.times do -%>
<p>Hello!</p>
<% end
end
x.report "partial" do
10000.times do -%>
<%= render partial: "hello" %>
<% end
end-%>
<% end -%>
<p>Hello!</p>
そしてその結果(2013年の15インチRetina MacbookProでRuby2.1とRails4.0.2を使用):
Rehearsal -------------------------------------------
inline 0.010000 0.000000 0.010000 ( 0.007045)
partial 0.970000 0.090000 1.060000 ( 1.050433)
---------------------------------- total: 1.070000sec
user system total real
inline 0.010000 0.000000 0.010000 ( 0.005529)
partial 0.920000 0.070000 0.990000 ( 0.997491)
したがって、部分レンダリングは、高速マシンで平均約0.1msで実行されます。インラインレンダリングよりもはるかに低速ですが、URL生成、Railsヘルパー、ブラウザレンダリング時間などについて考える必要がある場合は、気付くのが難しいほど高速です。
パーシャルのレンダリングのパフォーマンスがはるかに悪い場合でも、私はおそらく巨大なビューを分解することを決定するでしょう。
「MakeItWork」、「Make It Right」、「MakeItFast」というフレーズがあります。大きすぎるビューを修正しようとすると、「Make it Work」モードから抜け出そうとしているので、「MakeitFast」にスキップすることはできません。コードの保守性が低下し、リファクタリングの機会を逃す可能性があります。これにより、キャッシュの機会が発生し、パフォーマンスがさらに向上する可能性があります。
私の番号を信じる必要はありません。しないことをお勧めします! Rubyのベンチマークライブラリは、独自のベンチマークを実行するためのいくつかの簡単なツールを提供します。 New RelicやMiniProfilerなど、フルスタックをプロファイリングするためのツールもあります。私はこれら3つすべてを日常業務でかなり定期的に使用しています。
プロファイリングするときは、常にプロダクションモードでプロファイリングしてください。 Rails開発環境は、クラスとビューを自動リロードします。これは、開発中に役立ちますが、パフォーマンスの数値が低下します。
-
バッテリーの状態はどのくらい重要ですか?
スマートフォンのテクニカルサポートフォーラムのユーザーは、バッテリーの状態を常に心配しています。 95%以上の測定値を心配している投稿を見るのは珍しいことではありません。そして、それは自然で理解できることです。バッテリーの状態は、バッテリーの動作を示すクリーンで信頼性の高い指標のように見えます。適切なバッテリーがなければ、スマートフォンは単なるペーパーウェイトになります。ただし、バッテリーの状態はデバイスの状態とはほとんど関係がなく、とにかくほとんどの場合間違っています。 バッテリーの状態とは何ですか? バッテリーは、予想よりも測定が困難です。バッテリーの現在の充電量を測定するという日
-
部分的なスクリーンショットを撮る方法
マニュアルを学ぶWindows PCで部分的なスクリーンショットを撮る自動方法。ただし、スクリーンショットを同時に編集したい場合は、TweakShot スクリーン キャプチャも使用してください。このソフトウェアは、部分的なスクリーンショットのキャプチャや編集にも役立ちます。 情報は急速に変化しており、テクノロジーが重要な役割を果たしています。オンラインで仕事や勉強をすることに慣れてきた人も増えてきましたが、ノートを取るのに苦労しています。そのため、彼らはスクリーンショットを撮り、コンピューター画面を記録しようとしています。 あなたもこの狩りに参加しているなら、あなたは正しい場所に来ました.こ