問題タブ [overhead]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - テキストを編集するための最小限の CPU とメモリのオーバーヘッド データ構造?
マインド マッピング アプリケーションを作成していますが、「メモ」エディターに最適なデータ構造は何かを考えていました。メモはほんの数個の記号である場合もあれば、ページの長さである場合もあり、更新、編集、シャッフルなどを行っています。アプリはモバイル プラットフォームで実行することを目的としているため、処理とメモリのオーバーヘッドは最小限に抑える必要があります。
私の基本的なアイデアは、編集中にメモを断片化するロープ/リンクリストタイプの構造を実装して、コンテナーがいっぱいになった場合にメモを再割り当てすることによるオーバーヘッドを回避し、動的に成長するベクトルなどで不要なスペースを割り当てないようにすることです。
ただし、メモを断片化しすぎると、必然的にそれ自体でオーバーヘッドが発生します。そのため、実装の 2 番目の部分では、メモの編集中に使用されるロープ構造を、保存と高速読み取りのために順次データ構造に変換することを計画しています。
したがって、基本的にオブジェクトは順次データ構造に格納されて読み取られますが、編集されると断片化されたデータ構造にコピーされ、編集が完了するとオブジェクトは元に戻されます。
これは良いアイデアですか?そうでない場合は、推奨事項を歓迎します。いずれにせよ、私が学ぶことができるいくつかの同様のオープンソース実装を知っている人はいますか?
python - ctypesとC拡張
ゲームプロジェクト用にCで記述された関数がいくつかあります。これらの関数は非常に頻繁に呼び出されます(1秒間に約2000〜4000回)。関数は生の速度のためにCで書かれています。
さて、これらの関数をPythonに含める最も簡単な方法は、を使用することctypes
です。別の方法は、これらの関数の周りにPythonのC拡張機能を作成することです(これにはかなりの余分な労力がかかります)。それで、DLLの初期ロードを除いて、オーバーヘッドはどれくらい大きいのだろうかと思いましたctypes
。
Python 2.7(標準のCPythonリリース)を使用していますが、Cythonのような外部ライブラリを使用したくありません。
この質問は以前に行われたことがありますが、2つのオプションのパフォーマンスの比較に関する情報はあまり見ていません。
android - Android でのサービスのオーバーヘッド (いくつ作成すればよいか)
Android でのサービスのオーバーヘッドがどれほど大きいか知っている人はいますか?
そして、次の設計上の決定に役立つ他の議論があれば.
2 つの SQLite Db があり、1 つは実際のデータ (基本的に読み取り専用の製品在庫) を格納し、もう 1 つは設定、選択したアイテムのリストなどを格納します。
これらのデータベースを管理するサービスを作成しました。主な理由は次の 2 つです。
- onDestroyで可能な「閉じるときに保存」(設定)できるようにしたい
- データの読み込みには時間がかかるため、アプリをすばやく閉じてもデータはメモリに保持されます
設計の観点から、次のいずれかを行うことができます。
- 両方の DB を処理する 1 つのサービスを作成する
- それぞれが 1 つの DB を処理する 2 つのサービスを作成する
DBごとに個別のサービスを作成する方がすっきりと感じます。たとえば、一般的な基本クラスを拡張してシャットダウンやタイマーなどを処理します。また、それらを個別に構成することもできます(現時点では必要ありません)。
一方で、私はこの道を進み始めたくありません。そして、「サービス」でこのようなことを行うことに慣れると、3 つまたは 5 つのサービスの制限があることがわかります。
では、たとえば 5 つの実行中のサービスのオーバーヘッドと、5 つの異なる機能をホストする 1 つのサービスのオーバーヘッドはどうなるでしょうか? 何か案は?
c# - セッションと応答オブジェクトをクラスに渡す - オーバーヘッド?
私がやっていることのオーバーヘッドが大きいかどうかを誰かが理解するのを手伝ってくれるかどうか疑問に思っていました。現在動作していますが、これによりサイトの速度が低下するかどうかはわかりません. すべてのセッション変数を設定するworkflowobjクラスがあります。このクラスは、必要なページでインスタンス化されます。
WorkFlowObj wfo = new WorkFlowObj(this.Session, this.Response); wfo.VendorRedirect();
これが必要なのは、セッション変数を追跡できると同時に、より複雑なページ ワークフローを 1 か所で追跡できる必要があるためです。このソリューションはすでに機能していますが、唯一の問題は、セッションと応答オブジェクトを通過することで多くのオーバーヘッドが発生するかどうかわからないことです。これがひどく非効率的かどうか誰か教えてもらえますか?? 以下は、workflowobj クラスのコードです。
c# - C# の自動プロパティがオーバーヘッドの原因になっていませんか?
自動プロパティがあり、そのクラス内からアクセスしようとすると、直接アクセスするのではなく、関数を使用してクラスのメンバーにアクセスするため、オーバーヘッドのように見えます。
これが正しい場合、そのような場合は自動プロパティを使用しないことを検討する必要がありますか?
java - Java if と try/catch のオーバーヘッド
if ブロックとは対照的に、 Java でtry/catchブロックを使用するためのオーバーヘッドはありますか?
たとえば、文字列の「安全なトリム」メソッドの次の 2 つの単純な実装を取り上げます。
raw
入力がめったにない場合null
、2 つの方法の間にパフォーマンスの違いはありますか?
さらに、コードのレイアウトを簡素化するためのアプローチを使用することは、特にコードを 1 つの try/catch ブロックで囲むことによってまれなエラー条件をチェックする多数のif ブロックを回避できる場合に、適切なプログラミング パターンですか?tryTrim()
たとえばN parameters
、 を使用するメソッドを持つことはよくあることです。これはM <= N
、その開始近くでそれらを使用し、そのようなパラメータが「無効」(たとえば、null または空の文字列) である場合、残りの部分に影響を与えることなく、迅速かつ確定的に失敗します。コード。
k * M
そのような場合、 if ブロック(ここでk
はパラメーターごとのチェックの平均数、たとえばk = 2
null または空の文字列)を記述する代わりに、 try/catchブロックを使用するとコードが大幅に短縮され、1 ~ 2 行のコメントを使用できます。 「型にはまらない」ロジックに明示的に注意してください。
このようなパターンは、特にエラー状態がめったに発生しない場合にメソッドを高速化し、プログラムの安全性を損なうことなく高速化します (たとえば、null または空の値を持つ文字列処理メソッドのように、エラー状態が「正常」であると仮定すると)。存在することはめったにありませんが、許容されます)。
html - HTML 空白インデントのオーバーヘッド
空白を使用して html ドキュメントをインデントすることの全体的な影響は何かと考え始めました。
単純にタブを使用してインデントしないのはなぜですか? 1 文字 (\t) と 4 文字 (スペース) のほうが費用対効果が高いのではないでしょうか?
タブを使用するように asp.net-page を変換し、レンダリングされたマークアップのサイズを比較することで、ほとんど実験を行いませんでした。1 つの部分ビューの空白だけを置き換えることで、22kb サイズのページが 19.4kb に縮小されました -> 12% の縮小です。すべてのインデントを変更すると、ページは最終的に 16,7kb を割り当てました - 24% 削減! (検証には chrome dev tools と Fiddler を使用)
私の推論は正しいですか?HTML のインデントにはタブを使用する必要がありますか? スペースを使用する理由はありますか (エキゾチックなブラウザーとの互換性など)?
ps。Stackoverflow もスペースを使用しているようです。SO のメイン ページをタブを使用するように変換すると、9% 削減されました。これは有効な観察ですか?もしそうなら、なぜ彼らはタブを使わなかったのですか?
javascript - WebSockets:オーバーヘッドを減らすのに役立ちますか?
私は動的検索を構築しています(キーストロークごとに更新されます):現在のスキームでは、キーストロークごとに新しいAJAXリクエストをサーバーに送信し、JSONでデータを取得します。
オーバーヘッドを節約するために、検索「セッション」ごとにWebSocketを開くことを検討しました。これにより時間を節約できることはわかっていますが、問題は、これらのパラメーターを考慮すると、本当に価値があるかどうかです。平均ping時間80ms:ユーザーが比較的高速に入力したと仮定した場合の各キーストローク間の時間1MB/秒の最悪の場合の転送速度、すべてのキーストロークで受信する必要のある各データパックは1KB以下です。また、このアプリは、検索結果をDOMに結合するのに30〜40ミリ秒かかります。
私はこれを見つけました:オーバーヘッドに関してHTTP対Websocketsですが、それは別のユースケースでした。
WebSocketは、純粋なHTTPオーバーヘッド以外のものを削減しますか?HTTPオーバーヘッドはどのくらいですか(Cookieがなく、ヘッダーが最小限であると想定)?
HTTPリクエストはリクエストごとに新しいネットワークソケットを開くと思いますが、WebSocketでは常に1つしか使用できません。私の理解が正しければ、新しいネットワークソケットを開くための実際のオーバーヘッドはどれくらいですか?
c++ - 仮想継承で非仮想ベースメソッドを呼び出すための追加コストはありますか?
私はこの質問を参照しました(タイトルを変更しました)。virtual
nessに関連するコード生成は実装固有であることを認識しています。virtual
ただし、以前の質問は、非仮想ベースメソッドを呼び出す場合、継承に関連する追加コストがあることを示唆しています。
私は次のテストコードを書き、そのアセンブリをg ++(with -O4
)でチェックしました:
共通部分
今、違いの部分はここにあります:
コード1(通常の継承)
コード2(仮想継承)
コード3(複数の仮想継承)
組み立てを確認したところ、3つのバージョンすべてに違いはありません。そして、以下はアセンブリコードです:
virtual
特定の最適化がオンになっている場合、継承に追加のコストがかからないということですか?これを評価するために、もっと複雑なテストコードを実行する必要がありますか?最適化を行わないと、これらのアセンブリ間に違いが生じることに注意してください。
windows - バイナリ ファイル (.doc、.pdf など) の git 1.7.8 オーバーヘッドをオフにする方法
大規模なsvnリポジトリを操作するためにgit 1.7.4を使用しました-大丈夫でした。
私は git 1.7.8 に更新しました。今、「git svn dcommit」を実行すると、余分な作業が行われます。タスクマネージャーを見ると、約1Mの書き込みが行われていることがわかります(SSDを使用しているので心配です)。たとえば、1.7.4 では表示されなかった .pdf および .doc ドキュメントの警告が表示されます。
「c:/Users/..../AppData/Local/Temp/SOMEHASH_documentName.doc は Word ドキュメントではありません」、「エラー: PDF ファイルが破損しています - 外部参照テーブルを再構築しようとしています」
そして、そのような警告の多くがあり、おそらく約 200 です。そして、git がそのような警告を表示すると、タスク マネージャーで書き込みカウントが増加していることがわかります。
git は、バイナリ .pdf/.doc ファイルの「スマートな」処理を試みているようです。しかし、私はこれを必要としません。この余分な作業をオフにするには、どの構成オプションを変更する必要がありますか?