問題タブ [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 投票する
2 に答える
185 参照

java - Java で一致するファイルをチェックする効率的な方法

私は Java の専門家ではありませんが、私が作成しているプログラムは高スループットを処理するものです。そこで、ちょっとクラウドソーシングして意見を集めてみようと思いました。これが状況です。

Java プロセスは、処理するファイルのディレクトリを監視します。これらのファイルはペアになります (格納されるデータ ファイルとメタ情報を含む xml ファイルがカタログ化されます)。そのため、現在のファイルのリストを取得し、必要なツインを確認してから処理する必要があります。

ファイルは常に一致するファイル名を持ち、ファイル拡張子のみが異なります。例: filename1.jpg filename1.xml filename2.jpg filename2.xml

これまで考えた選択肢は3つ。

  1. File.List(FileNamefilter) 呼び出しで FilenameFilter を使用して、ファイル名を持つファイルの総数が 1 より大きいかどうかを確認します。

  2. 2 つの filenamefilters を使用して、.xml を含むファイルと .xml を含まないファイルのリストを生成し、XML 以外のファイル リストを ArrayList に変換して、Collections.binarySearch() を呼び出します。

  3. .xml 拡張子のないすべてのファイルのリストを生成し、このリストを、ファイル名に基づいて .xml ファイルを想定するキーと値のペアのハッシュマップのキーとして使用します。次に、ハッシュ リストを実行し、処理する前に .xml ツインの存在を確認します。

何かご意見は?

編集/コメント

提案を確認し、いじくり回した後、XML ファイルをリストするファイルとリストしないファイルの 2 つの FilenameFilter を使用することにしました。XML ファイルのリストから xml 拡張子が取り除かれ、ハッシュにダンプされます。次に、データ ファイルのリストを繰り返し処理し、hashlist.contains() を呼び出して、続行する前にハッシュセットに一致するものが存在するかどうかを確認します。

不完全なファイルの処理については、次のような懸念があります。コメントで述べたように、新しく書き込まれたファイルは、その書き込みが完了するまで非書き込みプロセスには表示されないと想定しています(新しいファイル、編集用に開かれていません)

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

c# - C# SQL Server - 複数のデータベース アクセスまたはデータの複数ループに対してより効率的ですか?

アプリケーションの一部で、条件が満たされたテーブルの最後の ID を取得する必要があります。次に例を示します。

したがって、テーブル全体を取得して Num = 2 を探してループするか、Num = 2 のテーブルからデータを取得することができます。後者では、最後の項目が MAX ID になることがわかっています。

いずれにせよ、これを約 50 回実行する必要があります...すべてのデータを取得し、データのリストをループして特定の条件を探す方が効率的でしょうか...

または、条件に基づいてデータを数回取得する方がよいでしょうか..リストの最後の項目が最大IDになることがわかっています

クエリの基にする必要がある6つの条件があります

どちらがより効率的か疑問に思っています...約3500個のアイテムのリストを数回ループするか、必要に応じてデータをすでに分解できるデータベースに数回アクセスします

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

iphone - コアデータの効率

4種類の属性をCoreData内の32ビットintに格納するのはやり過ぎですか?または、単にそれらごとに個別の属性を作成する必要がありますか?(論理演算子を使用して設定/取得します)。

既存のオブジェクトに新しいエンティティを追加する予定です。このオブジェクトには、約14個の属性(注文用の「インデックス」属性を含む)を持つ200〜400個のアイテムが含まれます。常に1つのセットのみが操作または表示されます。

元に戻すサポートを維持する必要があります(iPhoneでのコアデータオブジェクト挿入のパフォーマンスを向上させる方法を参照してください) 。

複数の属性を1つのフィールドに格納すると、これを約8つの属性にまで下げることができる場合があります。検索性の問題を除けば、かなりのスペースを節約できますか?

また、週に約1〜3の割合で増加するアイテムの増加するリストに、400個のオブジェクトのセットを格納することは不合理ですか?

何千ものアイテムをコアデータに保存している人がいると聞いているので、おそらく私は妄想的です。長期的には、おそらくiCloudにアーカイブのエクスポートオプションを提供する必要があると思います。

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

iphone - CALayerの効率と限界数

私の iPhone アプリでは、画面上を個別に移動する 10x10 ピクセルの小さなドットを多数 (最大 150) 表示する必要があります。スムーズに動く必要はありませんが、1 秒ごとに更新する必要があります。現在、私は毎秒再描画する単一の CALayer として実装しています。

しかし、CALayer は GPU ハードウェアにマッピングされているため、非常に効率的であることは理解しています。そのため、ドットごとに個別の CALayer を作成し、それらの位置プロパティを設定して移動する方が (バッテリー使用量の点で) 効率的かどうか疑問に思いました。

それで、あなたはその経験があるかどうか疑問に思います。CPU の処理は少なくなりますが、GPU の処理は多くなります。GPU ハードウェアでまだ処理できる CALayer の数は?

それらを別々の CALayer にすれば、簡単にアニメーション化することもでき、見栄えが良くなります。それはより多くのエネルギー集約的でしょうか?

私の場合さらに悪いのは、現在、公開されている最大 4 つのタイルで CATiledLayer を使用していることです。これは、更新ごとに 4 回再描画する必要があることも意味します。

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

performance - 反復深化または試行錯誤?

ボードゲームをコーディングしています。アルファベータ法を使用してゲームツリーを生成しました。2つのオプションがあります。

  1. 反復深化を使用してアルファベータを最適化し、時間が経過するまでもう1つの層を生成し続けるようにします。
  2. 試行錯誤の結果、事前に下層を検査しなくても、制限時間内にすべてのボード構成で到達可能な最大深度がわかりました。

どちらのアプローチが優れており、検索がより深く到達するようになりますか?たとえば、最初は、利用可能なすべての時間を消費する深さXのツリーを生成できることを知っています...反復深化はさらに深さを追加できますか?

もっと明確にできるかどうか教えてください...

0 投票する
0 に答える
287 参照

python - cython を使用して時間のかかるリスト操作を高速化する

numpy ndarray で表される画像をパラメーターとして受け取る関数があります。この ndarray は、リストxリストxリストアイテム (行 x ピクセル x ピクセル) で構成され、通常のリスト形式のリストxリストxタプルに変換する必要があります (したがって、ndarray ではなくなります)。

したがって、たとえば、この変数の内容は次のようになります

次のように変換する必要があります。

以下の (cython) コード セグメントはまさにこれを行いますが、1024x768 の画像が完了するまでに約 800 ミリ秒かかります。

私の質問は次のとおりです。このコードをより (時間) 効率的にするにはどうすればよいでしょうか? リストの cdef があるかどうかを検索しましたが、リードが見つかりませんでした。100ミリ秒未満の完了時間を取得したいのであれば、不可能なことを求めていないことを願っています。ご提案いただきありがとうございます。

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

performance - RavenDB で最も効率的なのはどれですか?多数の小さなドキュメントと 1 つの大きなドキュメント?

RavenDB に多数 (~50,000) の小さなデータを格納する必要があります。このデータを読み返すと、毎回全体を読むことになります。書くときは、全体を書くことも、個々の部分を書くこともできました。

データは次のようになります。

Dictionary<int, long>オブジェクトのコレクションではなく、単一のドキュメント ラッパーとしてこれを簡単に格納できItemます。

これらのアプローチのうち、RavenDB でより効率的なのはどれですか?

データ セットが最大 500,000 に増加した場合、効率の違いは誇張されますか (読み取りの場合)?

0 投票する
2 に答える
1116 参照

java - 単一のタスクで呼び出された場合、ExecutorService.invokeAll() はどのくらい効率的ですか?

Collection<Callable<T>> tasksを作成して呼び出して使用する、スレッドプールを多用するコードがいくつかありますExecutorService.invokeAll(tasks)

私のアプリでは、のサイズはtasks大きく異なります。実際、ほとんどの場合、は単一のタスクExecutorService.invokeAll()で呼び出されます。私が使用しているの実装は、その実装は常にスレッドプールでタスクを実行するように見えます(呼び出しスレッドでは決してありません)。invokeAll()ThreadPoolExecutor.execute()

単一のタスクの場合、別のスレッドに送信するよりも、現在のスレッドでタスクを呼び出す方が効率的でしょうか?

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

mysql - 数百万行のテーブル、MySQL に対する LIKE クエリのパフォーマンス

フィールドにプレーンな INDEX がある場合、実際の経験のある人なら誰でも、速度と効率の観点から、数百万行のテーブルで MySQL で LIKE クエリを実行するにはどうすればよいでしょうか?

数百万行のテーブルでデータベース フィールド検索を実行するためのより良い代替手段 (FULLTEXT 50% ルールのように結果を除外しない) はありますか?

例:

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

udp - 入力データのサイズが少し大きくなると、udp sendto が遅くなるのはなぜですか?

奇妙な質問があります。Androidで次のテストを行いました:

i=0;
while(i< PACKET_NUMBER)
{

//UDP パケット送信
if( sendto(sockfd,buffer,strlen(buffer),0, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) <= 0)
{
error("udp 経由でリモート ホストにパケットを送信できませんでした\ n");
}
私は++;
}

このテストは、さまざまなバッファー サイズで行いました。バッファ サイズが数値よりも小さい場合 (約 500 バイトである必要があります)、どのサイズを選択しても ( 20 40 80 160 320 など)、while ステートメントはほぼ同時に実行できます (3 分 10 秒など)。ただし、パケット サイズが 510 520 600 1280 のように 500 より大きい場合、while ステートメントの実行時間は 10 分を超えるなど、はるかに長くなります。誰かが理由についてのヒントを教えてもらえますか?