問題タブ [processing-efficiency]

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.

0 投票する
14 に答える
127344 参照

c# - C#でフィールドを「読み取り専用」としてマークする利点は何ですか?

メンバー変数を読み取り専用として宣言する利点は何ですか? クラスのライフサイクル中に誰かがその値を変更するのを防ぐだけですか、それともこのキーワードを使用すると速度や効率が向上しますか?

0 投票する
5 に答える
4716 参照

c - Cでバイナリ演算を行う最良の方法は?

私は C を学習し、それぞれが 2 進数であると想定される 2 つの文字列値を取り、ユーザーの選択に従って算術演算を実行する簡単なプログラムを作成しています。

  • 2 つの値を加算し、
  • 入力 1 から入力 2 を引く、または
  • 2 つの値を乗算します。

私の実装では、文字列内の各文字がバイナリ ビットであると想定しchar bin5 = "0101";ています。理想的には、バイナリ値を直接操作したいと思います。

Cでこれを行う最も効率的な方法は何ですか? scanf()文字列から各ビットを取得するのではなく、入力をバイナリ値として扱うより良い方法はありますか?

いくつかの調査を行いましたが、初心者の観点から明らかに優れたアプローチは見つかりませんでした。任意の提案をいただければ幸いです!

0 投票する
3 に答える
402 参照

c# - クラスター化された計算が多いアプリに対するC#の適合性?

私は、128ノードのLinuxおよびWindowsクラスターで実行されるフォトニックシミュレーションパッケージを作成する準備をしています。このパッケージは、ジョブを設計してクラスターに送信するためのWindowsベースのクライアントを備えています。

これのほとんどはよく知られた根拠ですが、実数処理能力の観点から、C#がC++にどのように積み重なるのか興味があります。私は両方の言語に非常に慣れていますが、.NETまたはMonoを使用したC#の優れたオブジェクトモデルとフレームワークのサポートは非​​常に魅力的です。ただし、このアプリケーションでは、開発者の好みのために処理能力をあまり犠牲にすることはできません。

この分野での経験はありますか?利用可能なハードベンチマークはありますか?最終的なマシンコードは、C#またはC ++ソースのどちらからのものでも、同じ手法を使用して最適化されると思います。特に、これは通常、pcode/ILレベルで行われるためです。

0 投票する
4 に答える
203 参照

python - Python で 1 つの文字列から別の文字列に一度に 1 文字を追加する効率的な方法

私は現在、画面にメッセージを描画し、フレームごとに1文字追加するpygameを使用して関数を作成しています(つまり、赤い10月の狩り)。元の文字列から徐々に大きなスライスを単純にコピー (または渡す) できることはわかっていますが、リソースを大量に消費することはわかっています。これを行うより良い方法はありますか?

徐々に大きくなるスライスを使用するコード:

0 投票する
4 に答える
325 参照

algorithm - C# 4.0、文字列の長さが != 0 かどうかを判断する最も効率的な方法? パート2

(申し訳ありませんが、これは文字列の長さを判断する最も効率的な方法 != 0?への 2 番目の投稿ですが、人々の回答に返信する方法がわかりません。返信は「回答」として投稿されます)

理想的には、私が探しているのは、次のことを行うための最も効率的なアルゴリズムです (これは 1 億回以上呼び出されます)。私はC#4.0を使用しています

文字列 "ABCDE " を次の配列に変換します: string["A","B","C","D","E"]

私のアルゴリズムは次のとおりです。

私の問題は、これを 100,000 個の文字列に対してプロファイリングすると、実行に 1.04 秒かかることです。

「if (split[i].Length != 0)」チェックをコメントアウトすると、わずか 0.2 秒しかかかりません。

文字列に対するこの (単純な) クエリが、TOTAL 実行時間の 80% を占めている理由を誰か教えてもらえますか? (特に、他の領域がより多くの CPU を使用することを期待していたので) 私が思いついた唯一のアイデアは、C# が文字列の長さを数えようとしているということです。 ?)。しかし、それは時間のオーバーヘッドには意味がありません。

split[i][0] が存在するかどうかを確認しようと考えましたが、例外に依存すると WAAAAAAY が遅くなります。

PS - 私のアルゴリズムは、多くの場合、返された配列が必要以上に大きくなるという点でも問題がありますが、オーバーヘッドはそれほど大きくないようです。

0 投票する
1 に答える
225 参照

paint - 楕円形のブラシで 2 点間のピクセルを塗りつぶす最速の方法は?

ラスターベースのペイント プログラムを作成しているとします。私のブラシは楕円形です。ユーザーはマウスをクリックしてからドラッグし、領域をペイントします。これで、pointA (クリックした場所) と pointB (マウス ドラッグから返された最初の点) の 2 つの点ができました。ブラシ領域内にあるすべてのピクセルを塗りつぶしたいと考えています。これを行う最善の方法は何ですか?

私の最初のアプローチは、2 つの点の間の勾配を計算し、次に pointA から pointB までインクリメントすることです。間の各ポイントについて、楕円の範囲内にあるすべてのピクセルを検索し、範囲内にある場合はオンにします。しかし、これは効率が悪いように思われます。なぜなら、ピクセルはしばしば 2 回以上 (ベン図を考えてください) インクリメントが楕円よりもはるかに小さいため、複数回チェックされるからです。

これに対するより良いアプローチはありますか?より効率的で、ピクセルをチェックする必要がある回数を最小限に抑える方法。

0 投票する
8 に答える
9984 参照

c - Cで現在の時刻/日付/日を取得する最も効率的な方法

C言語で現在の時刻/日付/日/年を取得する最も効率的な方法は何ですか? これを何度も実行する必要があるため、本当に効率的な方法が必要です。私はfreeBSDを使用しています。

前もって感謝します。

0 投票する
1 に答える
163 参照

facebook - Facebook がコメント、メール、SMS を処理する方法


この質問は、Facebook が活動をどのように処理するかに関するものです。Facebook がどのように効率的に活動を行っているか知りたいだけです。

私たちが Facebook にコメントするとき、すべてのサブスクライバーへのメール送信、SMS 送信などの一連のバックグラウンド プロセスがあります。すべてのメール送信と SMS 送信、通知の送信などを一度に行うと、コメントの投稿に非常に時間がかかります。右?それで、彼らはこれをどのように管理していますか??

例: 友達の写真にコメントすると、同じ写真の以前のすべてのコメンテーターと写真の所有者に通知とメール (購読している場合) が送信されます。写真に50人のコメンテーターがいる場合、50人の通知とメールを送信して、誰が購読したかなどを確認する必要があります.

コメントの送信時に 50 通知とメールを送信しようとすると、処理に時間がかかりすぎます。

彼らがこれをどのように効率的に達成しているか。

0 投票する
7 に答える
4325 参照

c++ - C++ 文字列インタビューの質問

私は最近、C++ のテクニカル インタビューに参加しました。そこで、文字列を取得し、最初と最後の n 文字で構成される文字列を返すことを意図した、簡単な文字列操作コードを少し与えられました。バグを修正し、機能を可能な限り効率的にするために、私は以下の解決策を思いつきましたが、インタビュアーはさらに高速で最適な方法があると主張しました:

元のコード:

私のコード:

私の変更の要約:

  • 戻り文字列を参照として受け取るようにインターフェイスを変更しました (RVO と右辺値がまだ利用できないと仮定します)。

  • substr を介して構築されている一時的な文字列を削除しました

  • 入力の一時的なインスタンス化を回避するために、入力文字列を const 参照として渡しました

  • last_n 文字列の off-by-1 エラーを修正

  • 各キャラクターがタッチダウンする回数を1回または2回に減らしました(シナリオが重複している場合)

  • 文字列 s のサイズが n 未満の場合にチェックを入れ、失敗の場合は false を返します。

ネイティブ C++ のみが許可されていると仮定すると、上記をより効率的または最適に行う他の方法はありますか?

注 1:元の入力文字列インスタンスは変更されません。

注 2:すべてのソリューションは、次のテスト ケースに合格する必要があります。そうでない場合、それらは有効ではありません。

0 投票する
3 に答える
75 参照

mysql - 関数を複数回呼び出すことなく、MySQL クエリで関数呼び出しの結果を複数回効率的に利用するにはどうすればよいですか?

次のような SQL クエリがあります。

functCall を 1 回だけ呼び出して、その結果を他の 2 つの比較で再利用する方法はありますか?

ありがとう!