問題タブ [tradeoff]
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.
python - Python Shelve モジュールのメモリ消費量
私は、さまざまなイベントのログである .txt ファイルを読み取り、それらのイベントの一部を辞書に書き込むタスクを割り当てられました。
問題は、ファイルのサイズが 3GB を超える場合があることです。これは、辞書が大きくなりすぎてメイン メモリに収まらないことを意味します。Shelveはこの問題を解決する良い方法のようです。ただし、常に辞書を変更するため、writeback
オプションを有効にする必要があります。これは私が懸念しているところです - チュートリアルでは、これにより読み取り/書き込みプロセスが遅くなり、より多くのメモリが使用されると書かれていますが、速度とメモリがどのように影響を受けるかに関する統計を見つけることができません.
writeback オプションを使用するか、コード効率のために読みやすさを犠牲にするかを決定できるように、読み取り/書き込み速度とメモリがどの程度影響を受けるかを明確にすることはできますか?
ありがとうございました
c++ - Windows 上の GNU GSL & MATLAB
この質問は、実際には GSL と MATLAB の間のトレードオフに関するものです。まず、いくつかの変数を定義しましょう。
さらに、これら 2 つのアプローチの使いやすさ、ライセンス、パフォーマンス基準に関する完全な回答が見つからなかったため、この質問をしています。
GNU GSL と MATLAB を使用して、いくつかの数値演算 (FFT など) を実装する必要があります。MS VS IDE を使用する Windows OS では、GSL (cygwin を使用) と MATLAB の両方を使用できることを知っています。
しかし、次の問題があります。
- アプリケーションで MATLAB ライブラリを使用する場合のライセンス(GSL も同様)
- MATLAB C++ コードと GNU GSL のパフォーマンスの違い (特に FFT を計算する場合)
- 使いやすさ(例外、エラー処理、テスト容易性)
実装の決定への道筋を照らしていただければ幸いです。
また、よろしくお願いします
java - Java でのエラー処理のトレードオフ
エラー処理には次の 2 つの方法があります。
1) ネストされた If を使用してエラーをチェックする
2) トライ/キャッチを使用する
これについてのチュートリアルがあります。しかし、ここでは、try/catch がパフォーマンスを低下させると言われています。そのため、トレードオフがあるようです。どのように決定するのですか?何をすべきですか?
ruby-on-rails - Rails データベースを介した検索の最適化
私は Rails プロジェクトを構築しており、一連のテーブルを含むデータベースを持っています..それぞれが 500k から 1M の行を保持しており、常に新しい行を作成しています。
プロジェクトの性質上、各作成の前に、テーブルを検索して (1 つのフィールドに対して) 重複を探す必要があるため、同じ行を 2 回作成することはありません。残念ながら、私のテーブルが大きくなるにつれて、これにはますます時間がかかっています。
検索対象の特定の文字列フィールドにインデックスを追加することで検索を最適化できると考えていましたが、インデックスを追加すると作成時間が長くなると聞きました。
したがって、私の質問は次のとおりです。インデックスが作成されたフィールドを含む行を見つけて作成することとのトレードオフは何ですか? フィールドにインデックスを追加すると、Model.find_by_name を使用してプログラムが高速になることはわかっていますが、行の作成がどれだけ遅くなるでしょうか?
javascript - ブックマークレット ポップアップ: JS または iframe 経由で div を生成しますか?
「偽のポップアップ」を開くブックマークレット (Amazon のウィッシュリストやピンタレストなどに似ています) を作成するとき、すべての要素を生成してそれらからすべてのページ スタイルを削除する代わりに、なぜ人々は iframe を使用しないのでしょうか? 私の知る限り:
iframe の利点:
- パスワードなどを記憶するためにブラウザメカニズムを使用できます
- サードパーティの Cookie の問題はありません
- フォームの送信ははるかに簡単です
- ページ上のスクリプトなどによって壊れている可能性があるJavaScriptははるかに少ない
iframe 短所:
- ポップアップを自動的に閉じることができません (ブックマークレットは iframe コンテンツを読み取ることができません)
- すべてのページ スクリプトは iframe の外部で実行する必要があり、結果は GET パラメータを介して渡されます (iframe はページ コンテンツを読み取ることができません)。
- ???
自動的に閉じる必要がない場合は、iframe の方がはるかに優れているように思えます。しかし、誰もこれをしていないようです。なぜだめですか?
algorithm - 移動平均精度?
私は人々が物事に投票したデータをいくつか持っています。投票したすべての人がどのように投票したかについて、各項目の平均を取得するとよいでしょう。投票は、絶えず入ってくる数字の流れと考えることができます。これで平均を正確に計算できるようになりましたが、そのためには、合計または現在の平均と、これまでに表示されたアイテムの数の 2 つの数値を保存する必要があります。私がこれを行う場合、私は使用することができます
しかし、投票したいアイテムごとに2つのデータを保存する必要があるため、これは面倒です。私が知っている移動平均またはイテレータ平均と呼ばれる別の方法があります。これは、ストリーミングデータで機能しますが、次のようなおおよその平均のみを提供します。
ここで、アルファは小さな固定学習率です。これは単に、新しいアイテムの方向に、その新しいアイテムと現在の見積もりとの差に比例する量だけ、新しい平均を移動しようとします。これにより、1 つの数値 (現在の平均) を保存するだけで済み、新しいアイテムが入ったときにそれを更新することができますが、これは概算でしかありません。
この方法が導入する誤差に既知の境界があるかどうかを知りたいです...この推定値が真実からどれだけ離れているかを推定する式はありますか?また、適切なアルファをどのように選択すればよいですか? 詳細については、この投稿とこの質問を参照してください。
networking - コーディング速度とプログラミング速度のトレードオフ: ネイティブ コードを使用する C++ または Java
さまざまな種類のネットワークを操作するプログラムを作成して、ニューラル ネットワークを調査したかったのです。これまでのところ、C++ で基本的なパーセプトロンを作成しました。私が理解しているように、ニューラル ネットワークはかなりマイナーなタスクを実行するためにも多くの計算能力を必要とする可能性があるため、最適化が懸念されます。または、少なくとも GPU プログラミングのように極端に行くことなく、このアイデアを真剣に受け止めたいと考えています。
私は Java でのプログラミングに慣れていますが、C++ のプログラミングにはそれほど慣れていませんが、いずれにせよもっと経験を積みたいと思っています。
私の質問:
Javaでメインプログラムをより速く書くことができるとすれば、速度が心配です。メイン プログラムを Java で作成し、より集中的な部分を C++ で作成するのと、プログラム全体を C++ で作成するのとでは、どちらが理にかなっていますか?
ある言語を他の言語より優先するというユーザー インターフェイス要件はありません (つまり、Web アプリに貼り付ける予定はありません)。**より多くのプロフェッショナルなオープン ソース バージョン (FANN/Encog) が既に利用可能であるため、これを使用する人は他にいません。これは純粋に私の娯楽/学習のためです。もっと C++ を学びたいので、少なくともその一部を書きたいと思います (ただし、完全に Java で書く方が理にかなっていると感じた場合は、その理由を知りたいと思います)。
unit-testing - RAII と単体テストの原則
RAII (Resource Acquisition Is Initialization) は、オブジェクトを構築するための推奨される方法の 1 つです。それは、「コンストラクターで複雑な作業を行わない」というユニット テストの原則とどのように関連していますか? 特に、「new」演算子によるオブジェクトの明示的な作成はありませんか? ただし、一部のオブジェクトの作成には、より複雑な手順が必要になる場合があり、ファクトリをコンストラクターに渡すと、読みやすさが低下するという意味で API が「ダーティ」になります。両方の原則を同時に満たす一般的な方法は何ですか?
SO に関する他のトピックを見つけました:スタック割り当て RAII オブジェクト vs DI 原則、しかし、それはより一般的な問題のように見え、よく説明されていません。
language-agnostic - コマンドをビデオ メモリに保存するか、PCIe 経由でコマンドにアクセスするか
私は現在、Fabian "ryg" Giesen による" A trip through the Graphics Pipeline " ブログ シリーズのパート 2を読んでいます。
この特定の部分で、彼は 1 つの興味深い点について話します。GPU が処理するコマンドは、GPU に常駐するビデオ メモリから、または PCI Express バス経由で CPU 側から読み取ることができます。
いくつかの長所と短所を暗黙のうちに理解しました。しかし、私はそれらについてかなりぼんやりしています。トレードオフを完全に理解しているとは言えません。とにかく、自分の考えを首尾一貫して提示しようとします。
ビデオメモリへのデータの保存:
- 間違いなく速い。
- ただし、メモリのオーバーヘッドがあります (帯域幅についてはわかりません)。
CPU からの読み取り:
- ビデオ メモリにデータを保存するのが無駄な場合 (おそらく、二度と使用されないため?) には、より良い方法である可能性があります。
- ビデオメモリにデータを保存すると、PCIe バスの帯域幅が節約されるため、そのデータを再利用するときに役立つと思います。
- ただし、この通信は、ビデオ メモリから直接読み取るよりも遅くなります。
この 2 つの間には、さらに多くの複雑さとトレードオフがあると感じています。また、上で述べたことが真実であるかどうかは完全にはわかりません。誰かに次のことをしてもらいたい:
- 私の理解を深めるために、いくつかの重要なトレードオフと、おそらく他の複雑さを説明してください。
- 私が上で言ったことは本当かどうかを確認してください! (これについてはまだよくわかっていません。)
frameworks - ネイティブ・モバイル・アプリの開発において、IBM Worklight が提供できる機能と提供できない機能は何ですか?
私はすでにこれを読んだ:
IBM Worklight - ネイティブ アプリで使用できない機能はどれですか?
しかし、今は少し古いので、私は尋ねています:
Worklight を使用してビジネス アプリケーションおよびバンキング ツールの領域でネイティブ クロスプラットフォーム モバイル アプリを開発する際に、どのような機能がまだ不足していますか (JSONStore とダイレクト アップデートはまだ利用できませんか? さらに不足している機能はありますか?)。
ネイティブSDKを使用しているにもかかわらず、そのようなフレームワークを使用することの一般的なCONは何ですか(ネイティブプラットフォームのロードマップ、フレームワークインフラストラクチャの重量、パフォーマンスの問題、一般的なトレードオフなどに追いつくためのクロスプラットフォームの闘争など)。
Worklight の資料への参照は大歓迎です。
前もって感謝します