問題タブ [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.
.net - F# 判別共用体をシリアライズするのはなぜそんなにバイト数が多いのですか?
UDP パケット ストリームのデータをシリアル化しようとしていますが、シリアル化によって大きなオーバーヘッドが発生しています。FileData を 1k バイトの配列でエンコードすると、2312 バイトが返されます。自分ですべてをエンコードおよびデコードせずに、このオーバーヘッドをどのように削減できますか?
c++ - 例外がスローされない場合、C++ 例外はどのようにコードを遅くしますか?
たとえば、戻り値のチェックとは対照的に、例外処理に C++ 例外を使用するとオーバーヘッドが発生することを読みました。例外がスローされない場合に発生するオーバーヘッドについてのみ話しています。また、戻り値を実際にチェックして適切な処理を行うコードを実装する必要があると想定しています。また、内部に 45 個の状態変数を持つ例外オブジェクトをスローするコードと、すべてのエラーに対して負の整数を返すコードを比較するのも公平ではありません。
どちらがより速く実行されるかだけに基づいて、C++ 例外の賛成または反対のケースを構築しようとしているわけではありません。最近誰かが、例外を使用するコードは、戻り値をチェックしてエラーを処理するために必要なすべての追加の簿記コードを考慮に入れれば、戻りコードに基づくコードと同じくらい速く実行されるべきであると主張していると聞きました。私は何が欠けていますか?
delphi - Delphi 動的配列にはどのような簿記データが含まれていますか?
これは、メモリ割り当てをチェックする簡単なプログラムです。タスク マネージャーで前後の値を確認すると、各動的配列がサイズ = 1 で 20 バイトのメモリを占有することが示唆されます。要素のサイズは 4 であり、これはブックキーピング データの 16 バイトのオーバーヘッドを意味します。
system.pas を調べると、-4 バイトの配列長フィールドと -8 バイトの参照カウントを見つけることができますが、他の 8 への参照を見つけることができないようです。
サンプルプログラム:
php - 内部 Apache リクエストから PHP スクリプトへのオーバーヘッド
を使用して、同じサーバー上の別のサイトに HTTP 要求を行うことによってコンテンツを取得する PHP ページがありますfile_get_contents
。両方のサイトは、suPHP を使用して PHP を呼び出す Apache 2 で実行されます (これは FastCGI ですよね?)
この呼び出しのオーバーヘッドはどれくらい重要ですか? Apache は PHP にリクエストを送信する前に多くの処理を行いますか?
呼び出しを行う別の方法は、最初のサイトからexec('php /the/other/script.php some parameters')
. これは高速ですか、それともプロセスを生成するオーバーヘッドは Apache を経由するオーバーヘッドよりも大きいですか?
c++ - c/c++ でのポインタのメモリ オーバーヘッド
私は 64 ビット プラットフォームを使用しているため、すべてのメモリ アドレスは 8 バイトです。
したがって、配列のメモリ使用量を見積もるには、配列内の各エントリの sizeof(DATATYPE) に 8 バイトを追加する必要があります。
例:
では、各エントリは 10 バイトを占めるのでしょうか? したがって、長さ 1mio の配列は少なくとも 10 メガバイトを使用しますか?
ありがとう
java - Javaで「例外駆動開発」をコーディングすることのパフォーマンスコストは?
Java で例外を作成、スロー、およびキャッチすることによるパフォーマンス コストはありますか?
「例外駆動型開発」をより大きなプロジェクトに追加する予定です。独自の例外を設計してメソッドに組み込み、開発者がキャッチして適切な作業を行うように強制したいと考えています。
たとえば、名前に基づいてデータベースからユーザーを取得するメソッドがあるとします。
ただし、ユーザーが null である可能性があり、ユーザーの public メソッドを使用する前にこれを確認するのを忘れがちです。
その結果、NullPointerException とクラッシュが発生します。ただし、チェックを行った場合、ユーザーオブジェクトを返す前に、null の場合は「UserIsNullException」をスローします。
私は実装者に考えて行動するように強制します:
これにより、予期しないクラッシュに対してコードがより安全になり、より多くのバグが排除されます。Web サイトに 1 時間あたり数百人の訪問者がいて、このデザイン パターンがほぼどこでも使用されているとします。
このような設計アプローチはパフォーマンスにどのように影響しますか? メリットがコストを上回っているのか、それとも単純に悪いコーディングなのか?
助けてくれてありがとう!
アップデート!明確にするために、私の注意は、私の例が示唆するように、NullPointerException をラップすることではありません。目標は、実装者に try/catch を書くように強制することです。これにより、次の理由から、実際のクラッシュの頭痛の種を節約できます。
ユーザー == null
忘れられました。問題は、これら 2 つの設計モデルの比較に関するものです。
対:
javascript - Ajax フォームをどの程度原子的に作成する必要がありますか?
私は AJAX で持ち込んでいる Web フォームをいくつか持っています。バックエンドでデータベースを扱っていたので、フォームの各入力を AJAX でアトミックに処理し、フォームをユーザーが編集すると「リアルタイム」になります。フォームは、管理設定の ~20 フィールドです。
これにより、アプリで大量のオーバーヘッドが発生するか、エラーが発生しやすくなりますか、それとも実行可能なアイデアですか? もちろん、偶発的な操作 (テキスト入力を必要とするチェックボックスなど) は、テキストボックスがフォーカスを得て失うまで保持されます。
コメント?
java - Java メモリのオーバーヘッド
Java のメモリ オーバーヘッドについてお聞きしたいのですが、大きな ArrayList (61,770 項目) があり、各項目 (オブジェクトとその ArrayList エントリをカウント) が消費するメモリ量を計算しようとしています。すべてのデータがロードされた後、ヒープは ~ 25Mb かかります。ArrayList に項目が 2 つしかない場合、ヒープは ~1Mb かかるので、大まかに:
(24*1024*1024)/61,768 = 407 バイト。
ただし、各オブジェクトのフィールドをカウントすると、148 バイトが得られます (ArrayList を含まず、int=4、float=4、reference=4 と仮定します)。これらの余分なバイトがすべてどこから来たのか知りたいです。から...
ArrayList に格納するオブジェクトはインターフェイスを実装しているため、追加の値を格納していると推測できます。VM は、実装されたメソッドごとに 4 バイトの関数ポインタを格納している可能性があります。彼らが実装するインターフェースには20の機能があるため、さらに80バイト、合計228バイトですが、測定された400バイトにはまだ近くありません。
任意の助けをいただければ幸いです。
うわー、すべての素晴らしい答えをありがとう。
@Bolo: リンクに感謝します。このクラスでは、オブジェクトごとに最大 350 バイトを測定するため、大量のメモリ使用量の原因を確認することはほとんどできません。
@Yuval A: 貴重な情報源であるプレゼンテーションに感謝します。
@ウッコ:指摘された点。
@Jayan: 現在、ヒープをダンプしようとすると、NetBeans プロファイラーでエラーが発生します。後で再試行します。
c++ - structオブジェクトをパラメーターとしてC++の関数に渡すのは良い習慣ですか?
以下のライブの例を試してみました:
印刷された結果は次のとおりです。
それは私が期待したことです。私の質問は次のとおりです。パラメータpはオブジェクトp1の完全なコピーを取得しますか?もしそうなら、これは良い習慣かどうか疑問に思いますか?(構造体のサイズが大きくなると、コピーのオーバーヘッドが大きくなると思いました)。
iphone - NSArray の NSKeyedArchiver には大きなサイズのオーバーヘッドがあります
iPhoneアプリケーション用のデータを生成するMac OS XプログラムでNSKeyedArchiverを使用しています。デフォルトでは、結果のアーカイブが予想よりもはるかに大きいことがわかりました。例:
これは 10 * 100000 = 1M バイトの有用なデータを格納しますが、結果のファイルのサイズはほぼ 3 メガバイトになります。オーバーヘッドは、配列内のアイテムの数とともに増加しているようです。この場合、1000 アイテムの場合、ファイルは約 22k でした。
"file" は、それが "Apple バイナリ プロパティ リスト" (XML 形式ではない) であることを報告します。
この巨大なオーバーヘッドを防ぐ簡単な方法はありますか? NSKeyedArchiver が提供する単純さのために、それを使用したかったのです。データを独自の非汎用のバイナリ形式に書き込むことはできますが、それはあまりエレガントではありません。また、データを大きなチャンクに集約し、これらを NSKeyedArchiver にフィードすることは機能するはずですが、繰り返しますが、単純で簡単ですぐに使用できるアーカイバーを使用するという点に勝っています。このオーバーヘッドを削減するメソッド呼び出しまたは使用パターンが欠落していませんか?