コンシューマーアプリのパフォーマンスが低下する原因は何ですか?[閉まっている]


32

私のComcast DVRはすべてのリモートコントロールキー押下に応答するのに少なくとも3秒かかり、テレビを見るという単純なタスクをイライラするボタンマッシングエクスペリエンスにします。私のiPhoneはテキストメッセージを表示するのに少なくとも15秒かかり、iPodアプリを起動しようとする時間の1/4でクラッシュします。単にメールを受信して​​読むには、1分以上かかることがよくあります。私の車のnavcomでさえ、どろどろで無反応のコントロールを備えており、数秒以内に離すと連続した入力を飲み込むことがよくあります。

これらはすべて、ユーザビリティを最優先すべき固定ハードウェアの最終消費者向けアプライアンスですが、それでも基本的な応答性とレイテンシーで失敗します。彼らのソフトウェアは遅すぎる

この背後には何がありますか?それは技術的な問題ですか、それとも社会的な問題ですか?誰または何が責任を負いますか?

これらはすべて、ネイティブコードではなく、管理されたガベージコレクションされた言語で記述されているためですか?これらのデバイス用のソフトウェアを作成したのは個々のプログラマーですか?これらのすべてのケースで、アプリ開発者はターゲットとするハードウェアプラットフォームとその機能を正確に把握していました。彼らはそれを考慮しませんでしたか?「最適化はすべての悪の根源である」と繰り返し言っている人ですか?それらすべてのミリ秒が合計して数分になるまで、それは毎回「おお、それはちょうど100msだけです」という考え方でしたか?そもそもこれらの製品を購入したのは私のせいですか?

それはいくつかの点でたときにはっきりと「パフォーマンスが問題ではない、ああ、コードのスピードを心配しないでください」これは、単一の答えと主観的な質問ですが、私は頻繁に言って、ここで非常に多くの回答を見てイライラしていないため問題遅い、応答しない、ひどい体験にこだわるエンドユーザー。

それでは、これらの製品のどの時点で問題が発生しましたか?プログラマーとして、私たち自身の顧客にこの痛みを与えないようにするために私たちは何ができますか?


4
あなたは物事が間違っていたと仮定しています。ある時点で、誰かが「それで十分だ」と言い、製品を出荷しました。エンドユーザーがそれを受け入れれば、それはあります。(それは正しいとは言いませんが、今すぐ出荷することと決して出荷しないことのバランスが必要です。)
マイケルトッド

3
@Michael:それは「これらのデバイスを購入したことに対する私の過ち」、またはより一般的には、「このレベルの見苦しさを受け入れる消費者としての私たちの過ち」と一致しているようです。
クラッシュワークス

3
@Crashworks:ええ、かなり。私たちがそれを買い続けなければ、人々はクラップスを売り続けません。
メイソンウィーラー

4
それらは、ごみを集めない現代の企業で開発されました。

2
「これらはすべて、管理されたガベージコレクションされた言語で書かれているためですか?」「これらはすべて管理者が選択したごみ言語で書かれているからですか?」
カルロスキャンデロス

回答:


27

良い質問。毎日見ているのはこれです。

人々は適切なサイズのアプリで作業します。動作すると、バグのようにパフォーマンスの問題が忍び込んでいきます。違いは-バグは「悪い」-彼らは「私を見つけて、私を直して」と叫ぶことです。パフォーマンスの問題はただそこにあり、悪化します。プログラマーは、「まあ、私のコードにはパフォーマンスの問題はないだろう。むしろ、管理者は私に新しい/より大きい/速いマシンを購入する必要がある」と考えます。

実際、開発者が定期的にパフォーマンスの問題を探しているだけの場合(実際非常に簡単です)、単純にそれらを削除できます。

代わりに、「最新技術」は次のとおりです。

  1. 「早すぎる最適化」や90/10のフーホーなどの格言に依存しています。
  2. プロファイリングについて勇気を持って話し、時には実際に試してみてください。多くの場合、残念な結果が出ます。
  3. 経験と知識を装った古き良き当て推量に頼る。

しかし、本当に、それは否定的です。ポジティブなことに、この方法はほぼ常に機能し、これ以上簡単ではありません。ここだ詳細な例


3
マイク、いつかあなたと私はサンプリングされたプロファイリングに関する本を一緒に書かなければなりません。パフォーマンスプログラミングの「大聖堂とバザール」になります。
Crashworks

@Crashworks:それは楽しいだろう。真面目な方は、一言お願いします。
マイクダンラベイ

@Mikeもちろんですが、夏の終わりには、GDC、#AltDevBlogADay、そして自分の雇用者にすでに借りている記事や論文の膨大なバックログがあると思います!
クラッシュワークス

一般的に同意します。しかし、計算の複雑ささえ考えない人々による誤用にもかかわらず、実際のパフォーマンスだけで、「時期尚早の最適化はすべての悪の根源」(これを引用した人は誰でもフルバージョンを読むべきです)や90/10ルール「最適化しない」と言うのではなく、「効率的に最適化する」と言う。初期化コードを1ミリ秒オフにすることで何も得られません。すべての行を可能な限りパフォーマンスの高いものにするためのコードを記述すると、関連するパフォーマンスの問題の解決などを見つけるのを

@delnan:ランダム一時停止の使用を初めて覚えたのは、「停止」および「ステップ」パネルボタンのあるレイセオンミニでの'78年頃です。他の方法があると思ったことを覚えていない。だから、big-Oが重要である一方で、人々がプログラム自体に集中すべき場所を最初に言わせることなく、実際のソフトウェアで最適化について議論する方法さえも、私には不思議です。
マイクダンラベイ

16

これは技術的な問題ではなく、マーケティングと管理の問題です。

この時点で目を転がしている可能性がありますが、どうかご容赦ください。

企業が販売するのは「製品」であり、それを定義するのは「製品マネージャー」です。ハイテク企業では、ユーザーエクスペリエンスの専門家であるyadda yaddaといった他の多くの人々がそのことを重視しています。しかし、最終的に、製品マネージャーは、ユーザーが取得するものの仕様を記述する責任があります。

それでは、Comcast DVRを見てみましょう。理想的には、次のように動作します。

  1. プロダクトマネージャーは、「ユーザーがリモコンのボタンを押し、DVRから25フィート以内にいる場合、DVRは250ミリ秒以内にプレスに応答する必要があります」という仕様を作成します。
  2. 技術者はハードウェアを構築し、組み込みソフトウェアを作成します。
  3. QAテスターは、システムが仕様を満たしていることを承認するか、修正のために技術チームに返送します。

もちろん、多くのことがうまくいかない可能性があります。

  • 製品マネージャーがボタン応答を仕様に入れられない
  • QAの人たちは、仕様に対してテストするという平凡な仕事をしています
  • 誰かが仕様を満たすことを許可しないテクノロジーを選択したため、要件は厳しくなります
  • 技術スタッフは手が短いか、誰かがスケジュールを早めたため、一部のマネージャーは「応答性を忘れてください-この他の機能を完成させてください」と言います。
  • プロダクトマネージャーは、ゲームの後半まで応答性要件を公開せず、出荷日までに対応できません
  • 経営陣は、遅くなるまでQAテストに何も提出しないことを決定し、遅いコードを加速すると製品が不安定になる

そこにすべての無謀なプログラマーを見ましたか?何もありませんでした。

パフォーマンスの低下に対して一切の責任を負っているとは言いません。多くの場合、ジャンクを書くのと同じくらい簡単で迅速に、優れた堅牢で効率的なコードを書くことができます。

しかし、実際には、製品管理とQAのスタッフ全員が運転中に眠っていると、プログラマはそれを補うことができません。


FWIW、私はほとんどの消費者製品のひどいインターフェースについて完全に同意します。私は約25年間UIコードを書いてきましたが、優雅さとシンプルさを目指して努力しています。私はそれについて非常に考えているので、実際には問題です、私は今、ひどく設計されたユーザーインターフェイスを理解するのがお粗末なので、私の貧しい妻は私たちのメディアセンターでほとんどのデバイスを実行します。


+1-最終製品の問題(バグまたはパフォーマンス)がプログラマを責めることはありません。製品が必要な複数レベルのテストに合格した場合、プログラマーは仕事を正しく完了しています。製品がテストに合格し、それに問題がある場合、テスト/仕様に責任があります。
Qwerky

5
+1特に製品管理などについてはうまく書かれています。しかし、私は責任については同意しません。私はプログラマーを教育する人々にそれを置いたので、プログラマーは実際にパフォーマンスのバグを見つける方法を知らない(そして正確さのバグと比較してそれがどれほど簡単か)。
マイクダンラベイ

1
@マイク:まったくその通り。私の最初の主役で、私のレポートの1つは、「正しい」コードを書くことだけを教えられたスタンフォードからMSCSを取得したばかりの男で、単純な2レベルのネストされたループを期待するのも非常に奇妙だと思いましたマルチタスクの商用製品で酸素をあえぎながらCPUをひざまずかせないでください。そこには少しの指導がありました。:
ボブマーフィー

11

プログラマーは完璧ではないからです。

私は埋め込み物のプログラマーです。私のコードのいくつかは完璧ではありません。私の埋め込みコードのほとんどは高速です。

プロジェクトの終了時にパフォーマンスの問題を修正することは非常に困難です。

場合によっては、物事をシンプルに(したがって、致命的なバグではなく、現実的な時間でテスト可能、開発可能に)するために、メインアプリケーションの一部ではない「サービス」へのリモート入力などの物事を階層化します。最終結果、待ち時間。別の方法は、モノリシックアプリケーションにすべてを配置することです。これは、CまたはC ++(最も一般的な2つの組み込み言語)のバグの多い災害です。

組み込みデバイスには、ユーザーが望むことを実行しないプロセススケジューラがある場合があります。組み込み開発者としては修正が難しい。

レイヤー化の遅延により、複雑さが遅れを引き起こします。機能を要求しました。古い3210など、本当に古いNokiaをお試しください。Zippy高速UI。多くの機能。

開発者は賢くならないので、より高速なハードウェアが抽象化に夢中になり、機能が互いに殺されないようにしています。(または、あなたのiPhoneの場合)

UIのパフォーマンスは、設計の進行に合わせてテストする必要がある必要があります。

指定されていない場合、開発者はそれに慣れます。私たちは皆これを行います。「私の赤ちゃんはくない」

そして、それはGC言語ではありません。組み込みのリアルタイムJavaは非常に高速であるため、怖いです。(一方、埋め込みPythonは完全な犬です)

UIとしてデジタル入力の読み取りを切り替えるプログラムを作成します。それでもスイッチのバウンスを解除する必要があるため、デバウンスは数層上にあるため、スイッチを実際にすばやくフリックしても機能しません。理想的には、ファームウェアスタックの一番下にデバウンスロジックがありますが、それはハードウェアの仕組みではありません。

一部のDVDプレーヤーは、「イジェクト」スクリプトを実行してイジェクトします。DVRは、開発コストを適正に保つためにこのアプローチを取っている可能性があります。次に、CPUまたはRAMを使用して、それを吸います。


1
+1特に「私の赤ちゃんはugくありません」、そして弾むようなもののために。(Pascalでは、それを信じています)時に、私はいくつかの組み込み作業を行いました。ビデオに浮動小数点数を描画し、それについて痛々しいほど遅くなった。ある週末、ICEを接続し、スタックショット(16進数)を撮り、困惑させました。それは浮動小数点エミュレーターにあり、除算、切り捨て、乗算、減算などによって各桁を剥がすルーチンから呼び出されました。そしてもちろんそれは私のコードでした。(私はそれを行うより良い方法を見つけました。)
マイクダンラベイ

3

これらはすべて、ネイティブコードではなく、管理されたガベージコレクションされた言語で記述されているためですか?

関係ありません。遅いコードはパフォーマンスが低下します。確かに、特定の言語は特定のクラスの問題をもたらし、他の問題を解決する場合があります。しかし、優れたプログラマーは、十分な時間を与えられれば回避策を​​見つけることができます。

これらのデバイス用のソフトウェアを作成したのは個々のプログラマーですか?

部分的に。多くの場合、少なくとも寄与因子である可能性が非常に高いです。これは、優秀なプログラマーの需要と供給が不足している業界の不幸な副作用です。また、さまざまなレベルの技術的能力の間の溝は非常に大きくなる可能性があります。そのため、特定のソフトウェアを実装することを任されたプログラマーが、それを機能させるためだけに祝福することがあるのは理にかなっています(ある種)。

これらのすべてのケースで、アプリ開発者はターゲットとするハードウェアプラットフォームとその機能を正確に把握していました。彼らはそれを考慮しませんでしたか?

部分的に。最初は、ソフトウェア開発中にさまざまなメーカーと並行して交渉されることが多いため、正確なハードウェアプラットフォームはおそらく不明です。実際、最初のリリース後に、基礎となるハードウェアに小さな(しかし必ずしも重要ではない)変更が行われる場合があります。ただし、一般的な機能が知られていることに同意します。

問題の一部は、ソフトウェアがおそらくハードウェア上で開発されておらず、エミュレータで行われていることです。これにより、エミュレータが100%正確であっても、実際のデバイスのパフォーマンスを考慮することは難しくなります。

もちろん、これはリリース前の適切なプロトタイプハードウェアでの不十分なテストを正当化するものではありません。そのせいは、おそらくdev / qaの制御外にあります。

「最適化はすべての悪の根源である」と繰り返し言っている人ですか?

いいえ。彼らがとにかく彼の言うことを聞かないのは確かです。それ以外の場合、彼はそれほど頻繁に引用符を付けられません(これは「時期尚早な最適化...」と思われます)。:-D

最適化に関して、2つの極端のいずれかを採用するプログラマが多すぎる可能性が高くなります。

  • どちらかが完全に無視します。
  • または、実際のパフォーマンス要件とは関係のない特徴点に取りつかれています。最終的な効果は、予算がなくなり、コードが難読化されすぎて、実際のパフォーマンスの問題を安全に最適化できないことです。

それらすべてのミリ秒が合計して数分になるまで、それは毎回「おお、それはちょうど100msだけです」という考え方でしたか?

おそらく。Sleep(100)切断された肢の出血を遅らせるために使用されるティッシュペーパーと同等のものとして使用されている場合は、明らかに問題が予想されます。ただし、問題はそれよりも微妙だと思います。

問題は、現代のコンピューティングハードウェア(組み込みデバイスを含む)は、人々が信用を与えるよりもはるかに速いということです。ほとんどの人は、「経験のある」プログラマーでさえ、コンピューターがどれだけ高速であるかを正しく理解していません。100msは非常に長い時間です。そして、そのように起こると、この「非常に長い時間」は2つの方法を削減します。

  • 1つ目は、コンピューターが非常に迅速に行うことについてプログラマーが不必要に心配することです。(たまたま「1秒間に300回値を増やす」という懸念があったため、そもそもここにいました。)
  • 2番目は、物事が非常に長い時間がかかる場合(コンピューティングタイムスケールで)、彼らが時々正当な懸念を示さないことです。そう:
    • ネットワークまたはストレージデバイスと通信する際の待ち時間の影響を無視する場合;
    • ブロックされ、別のスレッドを待機しているスレッドの影響を無視する場合。
    • コンピュータが非常に高速に動作するため、開発者が問題を意識することなく、タスクを必要以上に頻繁に繰り返すことができることを忘れた場合
    • ...このような見落としの組み合わせが発生すると、ルーチンの実行が予想外に非常に遅くなります(コンピューティングタイムスケールで)。数回繰り返すと、人間にも気付かれることさえありますが、何百もの相互接続されたものがすべて自分ですばやく実行されているため、ピン留めするのは難しいかもしれません。

そもそもこれらの製品を購入したのは私のせいですか?

はい、間違いなく。まあ、あなた個人ではなく一般消費者です。製品は機能チェックリストで販売(および購入)されます。より良いパフォーマンスを要求している消費者が少なすぎます。

私の要点を説明するために:前回携帯電話を購入したかったとき、店は店内で遊ぶためのデモモデルを提供することさえできませんでした。彼らが持っていたのは、スクリーンがどのように見えるかを示すためのステッカー付きのプラスチック製のシェルだけでした。パフォーマンスや使いやすさは言うまでもなく、そのような重量を感じることさえできません。私のポイントは、十分な人々がそのビジネスモデルに反対し、彼らの反対を表明するために彼らの財布で投票すれば、私たちは正しい方向への小さな一歩になるだろうということです。

しかし、そうではないので、そうではありません。そして、毎年、新しい携帯電話はより高速なハードウェアでより遅くなります。

(質問は聞かれません。)

  • マーケティング担当者のせいですか?部分的に。リリース日が必要です。そして、日付が迫ってきたとき、「機能させる」と「高速にする」の選択は簡単です。
  • 営業担当者のせいですか?部分的に。彼らはチェックリストにもっと機能が欲しい。機能リストを誇張し、パフォーマンスを無視します。彼らは(時には)非現実的な約束をします。
  • マネージャーは責任がありますか?部分的に。経験の浅いマネージャーは多くの間違いを犯すかもしれませんが、非常に経験豊富なマネージャーでさえ、他の懸念に賛成してパフォーマンスの問題を解決するために時間を犠牲にするかもしれません。
  • 仕様のせいですか?部分的に。何かが仕様から外されている場合、後でそれを「忘れる」のはずっと簡単です。そして、特に明記されていない場合、ターゲットは何ですか?(個人的には、チームが仕事に誇りを持っている場合、パフォーマンスに関係なく心配すると思いますが。)
  • 教育のせいですか?多分。教育はおそらく常に後足になります。ソフトウェア開発を表面的に理解している初心者を急速に混乱させる「教育」に私は確かに不賛成です。ただし、理論に裏付けられ、学習文化を植え付ける教育は悪くありません。
  • アップグレードのせいですか?部分的に。新しいソフトウェア、古いハードウェアは本当に魅力的な運命です。バージョンXがリリースされる前でも、X + 1は計画中です。新しいソフトウェアは互換性がありますが、古いハードウェアは十分高速ですか?テストされましたか?特定のパフォーマンス修正が新しいソフトウェアに組み込まれる可能性があります。これは、不適切なソフトウェアアップグレードを奨励します。

基本的に、私は多くの貢献要因があると信じています。そのため、残念ながら、それを修正する特効薬はありません。しかし、それはそれが運命と暗闇であることを意味しません。物事の改善に貢献する方法があります。

それでは、これらの製品のどの時点で問題が発生しましたか?

私見では、特定のポイントを特定することはできません。時間の経過とともに進化した多くの要因があります。

  • Beanカウンター:コスト削減、市場のタイミング。しかし、それでもプレッシャーなしに達成した進歩を達成できたでしょうか?
  • 業界の熟練した人々の高い需要と低い供給。プログラマーだけでなく、マネージャー、テスター、さらには営業担当者も。スキルと経験の欠如は間違いにつながります。しかし、それはまた学習にもつながります。
  • 最先端のテクノロジー。技術が成熟するまで、予想外の方法で定期的に噛みつきます。しかし、それでもまた、そもそも多くの利点がありました。
  • 複合合併症。時間が経つにつれて、業界は進化してきました。ツール、テクノロジー、レイヤー、テクニック、抽象化、ハードウェア、言語、バリエーション、オプションの追加。これにより、現代のシステムを「完全に」理解することはやや不可能になります。ただし、結果としてはるかに短い時間でより多くのことを行うこともできます。

プログラマーとして、私たち自身の顧客にこの痛みを与えないようにするために私たちは何ができますか?

私はいくつかの提案(技術的および非技術的)を持っています。

  • 可能な限りソファーで-あなた自身の製品を使用してください。ぎこちない、遅い、または不便なことを明らかにするために、直接体験するようなものはありません。ただし、「インサイダーの知識」による欠陥の回避を意識的に避ける必要があります。たとえば、バックドアPythonスクリプトを使用して連絡先を同期するのに問題がない場合は、「製品」を使用していません。それは次のポイントをもたらします...
  • ユーザーの声に耳を傾けます(できれば最初の手ですが、少なくとも秒針はサポート経由で)。プログラマーは(一般に)隠れて、人間のやり取りを避けることを好みます。しかし、それはあなたの製品を使用するときに他の人が経験する問題を発見するのに役立ちません。たとえば、すべてのショートカットを知っており、それらを排他的に使用するため、メニューオプションが遅いことに気付かないかもしれません。マニュアルにすべてのショートカットが完全に記載されている場合でも、遅すぎるにもかかわらず、一部の人々は依然としてメニューを好むでしょう。
  • 継続的にテクニックのスキルと知識を向上させるよう努めてください。学んだすべてを批判的に分析するスキルを身に付けます。知識を定期的に再評価してください。場合によっては、自分が知っていたと思ったことを忘れないようにしてください。それは育ちます...
  • 一部のテクノロジー/テクニックは非常にトリッキーであり、微妙な誤解や誤った実装につながる可能性があります。共通の知識や利用可能なツールの進化による他の人は、賛成または反対になる可能性があります(シングルトンなど)。いくつかのトピックは非常に扱いにくいため、膨大な誤報を広める「hocus-pocus pundits」の集団を生み出しています。私の特定のバグは、マルチスレッドに関する誤った情報です。優れたマルチスレッド実装により、ユーザーエクスペリエンスが大幅に向上します。残念ながら、マルチスレッドに対する多くの誤った情報のアプローチは、パフォーマンスを大幅に低下させ、不安定なバグを増加させ、デッドロックのリスクを増加させ、デバッグを複雑化します。
  • 所有権を得る。(真剣に、私は役員室のビンゴをしていません。)一部のチェックリスト項目よりも優先されるパフォーマンス機能について、マネージャー、製品所有者、営業担当者と交渉してください。より良い仕様を要求します。子供っぽくはありませんが、パフォーマンスについて人々に考えさせる質問をすることによって。
  • 目の肥えた消費者である。機能は少ないが高速な電話を選択してください。(速くないCPU、より速くUI。)それについて次に自慢!より多くの消費者がパフォーマンスを要求し始めると、より多くのBeanカウンターがそれに対する予算を開始します。

これは、非常に綿密でよく考えられた答えです!偶然にも、「#1 A-priority bug this cycle:latency is> 60ms、it must be 33ms、ZOMG !!! 1!」というテーマのチームミーティングから戻った直後にこの記事を読みました。
Crashworks

1

あなたの最初の間違い、そしておそらくあなたがなぜ反対票を投じたのか、それはあからさまに明白な誇張に値します。iPhoneとiPadがそれほど悪いと信じることを本当に期待していますか。

最終的には顧客が責任を負います。それは、コストと、顧客が支払う準備ができているものと、見返りに得られるものに帰着します。スピードよりも機能を選択した場合、それが得られるものです。スピードよりも価格を選択した場合、それが構築されて販売されます。ブランドイメージがより重要な場合.....最終的に、顧客は財布で、重要なものとそうでないものを決定します。ブランドの売春婦になって製品を購入するかどうかは、他のすべての人がしているためです。

あなたはプログラマを非難しています。彼らは確かにコードを書きましたが、顧客の要件、ハードウェア、BOMコスト、R&Dコスト、マーケティング予算などを定義しませんでしたし、定義すべきではありません。 、それはソフトウェアではありません。

使用される技術、使用される言語などは、これとは関係ありません。悪い開発者対良い開発者、それとは何の関係もありません。中途半端なプログラマなら誰でも、コードの実行を高速化し、応答性を高め、究極のコードにすることができます。私の経験では、まともなプログラマーは意思決定を任されたときにビジネスを破産させないが、まともなプログラマーはそれがどれだけ「良い」かを文句を言う。


2
私のiPhone番号は誇張ではありません。私は自分の電話を使用している間、声を出して秒を数えることでそれらを得ました。youtube.com/watch?v=Pdk2cJpSXLgで、この問題のユーモラスな(極端ではない場合)描写があります。また、携帯電話を購入したときは大丈夫でした!電話を選択するときは、パフォーマンスを慎重に評価しました。しかし、Appleからの連続したファームウェア更新のたびに、速度が遅くなり、使用できなくなりました。Appleのアップデートをインストールするのが私のせいかもしれない。
Crashworks

私はプログラマーを大いに非難しています-バグや恐ろしいユースケース分析のある商用アプリを常に見ており、彼らが仕事をしている人に関係なく、彼らの仕事に能力や誇りを持った開発者は決してリリースしません-これらの人々は私たちの職業に対する不名誉。
ベクトル

1

時期尚早な最適化は悪い場合もありますが、十分に制約されたシステムでの優れたユーザーエクスペリエンスまたは良好なバッテリ寿命のために必要な場合ではありません。失敗とは、プロジェクトの開始時に優れたユーザーエクスペリエンスとまともなバッテリー寿命を提供するために必要なあらゆることを、保守よりはるかに困難で短い場合でも、調理よりも保守可能なソフトウェアエンジニアリングを優先することの欠点ですいくつかのきれいに設計されたソフトウェアスタックと方法論を巡回します。

iPhone 3Gをお持ちの場合、Appleは新しいデバイス用にのみ最適化されたOSアップデートをいくつかリリースしました。3Gの以降のOSアップデートにより、3Gのパフォーマンスがわずかに向上する場合があります。


1
それはないです「優れたユーザーエクスペリエンスのために必要なときに早期の最適化は、時には悪いですが、ない」時期尚早な最適化
カルロスCampderrós

1
最適化が必要な実際のボトルネックに関するメトリックを取得する前に、多くの要素の最適化を開始する必要がある場合があります。そうでない場合、システムはスケジュールとパフォーマンスを満たす最適化後の設計に誤りを生じます。
hotpaw2

0

DVRは、バッファリングされたデータを最初にダンプし、次に監視している新しいチャネルのデータでいっぱいの別のバッファをキューに入れる必要があるため、チャネルの変更に時間がかかります。ほとんどの場合、このバッファはハードドライブに保存されるため、これらの操作には時間がかかります(さらに、リアルタイムでのみバッファを満たすことができます)。DVRを使用すると、「ライブ」番組を視聴することはなく、常に遅延します(偶然ではなく、チャンネルを切り替えるときに知覚される遅延と同じ時間だけ遅延します)。これは、ラジオで聴くのと同時にスポーツ番組を視聴することで簡単に確認できます。


これは私が言及していたものとはまったく異なります。私のDVRでの問題は、メニュー内の操作であっても、操作に対する応答を表示するのに数秒かかることです。たとえば、メインメニュー(番組を見ない)をナビゲートしているときに、リモコンでDOWNを押すと、画面上のハイライトが1項目下に移動するまでに数秒かかります。ショーを見ながら「一時停止」を押すと、一時停止するまでに5秒の遅れがあります。録画をプログラムし、ガイドでページを上下に移動すると、ボタンを押すたびにディスプレイの登録と変更に数秒かかります。
Crashworks

私はこの声明に同意しません。AT&T UverseからComcastに切り替えたばかりですが、ComverseのDVRはUverseボックスに比べて非常に遅いことがわかりました。それが遅延の理由かもしれませんが、それがボックスが遅い唯一の理由になるという意味ではありません。
ジェッティ

-2

その理由は、ほとんどの消費者向けアプリは、ソフトウェアについて何も知らない人々によって管理および販売されており、実際のスキルや知識とは対照的に、履歴書または何も役に立たないマネージャーの推奨に基づいて開発者を雇うためだと思います。


2
説明がないと、他の誰かが反対意見を投稿した場合に、この答えが役に立たなくなることがあります。たとえば、「アプリは優れた開発者を雇う優秀な人によって管理され、販売されている」などの主張を誰かが投稿した場合、この回答は読者が2つの対立する意見を選ぶのにどのように役立ちますか?それをより良い形に編集することを検討してください
-gnat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.