問題タブ [code-complexity]

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 投票する
6 に答える
437 参照

java - 存在する場合はリスト内のオブジェクトを更新するためのJavaでの最速かつ最も効率的な実装であり、そうでない場合は追加します

機能している問題ステートメントがありますが、以下のシナリオを処理するために、より効率的で、より速く、さらに重要なことに正しく設計されていることを知りたいです。

私はPOJOクラスを持っています

リスト、基本的にはオブジェクト A のリストをリストに入力しようとしています。今問題の実装。オブジェクト A をリストに追加するときに、 String を持つオブジェクトが既に存在するかどうかを確認する必要があります。はいの場合、古いオブジェクトを古い d1 + 新しい d1 で更新し、新しいオブジェクトをリストに追加しない場合、新しいオブジェクトをリストに追加します。私の現在の実装は以下のようなものです。

2 番目の for ループ内で処理を行うためのより効率的な方法はありますか?

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

c - Thrust - 私の配列/データの使い方 - モデル

私はスラスト(cuda)が初めてで、いくつかの配列操作を行いたいのですが、インターネット上で同様の例が見つかりません。

次の2つの配列(2d)があります:

私は推力がこの配列を計算したい:

私はそれがc/c++でどのように機能するかを知っていますが、それを行うために推力を言う方法は知りません.

これがおそらくどのように機能するかという私の考えです:

スレッド 1: a[0] を取得 -> b で展開します。c に書き込みます。

スレッド 2: a[1] を取得 -> b で展開します。c に書き込みます。

しかし、私はそれを行う方法がわかりません。次のように、配列 a と b を 1 次元配列に書き込むことができます。

そして疑似関数:

誰でもアイデアはありますか?

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

c++ - Win32 C++ アプリケーションにおける McCabe の複雑さ

この質問を読んだ後:

Java でのスイッチの McCabe Cyclomatic Complexity

私の興味は、そのような方法 (?) では解決できない switch ステートメントに向けられました。

より優れた保守性を保証するために McCabe の決定は 20 未満にする必要があることに気づき、私は Win32 アプリケーションについて疑問に思うようになりました。

Win32 アプリケーションを作成する場合、ボタンを作成できます。これらのボタンに関しては、ハンドラーを配置するのが非常に一般的であり、ボタンが押されたときに送信されるメッセージの処理は、多くの場合、Win32 コールバック関数で行われます。

アプリケーションが大きくなるにつれて、この switch-statement は大きくなります (20 を超えます)。これは、Win32 アプリケーションの保守性が他のアプリケーション (Java Swing ?) よりも悪いということですか?

それとも、これは McCabe の複雑さの例外でしょうか? もしそうなら、これはどのような点で他のアプリケーション タイプの保守性と実際に同等なのでしょうか?

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

java - Java フレームワークの複雑さの統計

フレームワーク(hibernate、spring、apache-commons など)の複雑さを説明するのは非常に困難です。

私が考えることができた唯一のことは、jar ライブラリのファイル サイズを比較することでした。さらに良いのは、jar ファイルに含まれるクラスの数です

もちろん、これは複雑さの数学的な証明ではありません。しかし、少なくとも、一部のフレームワークは他のフレームワークと比較して軽量であることを明確にする必要があります。

もちろん、統計を計算するには静かな時間がかかります。時間を節約するために、おそらく誰かがすでにそうしているのだろうかと思っていました。

編集:

はい、個々のメソッドやクラスの複雑さを計算するツールはたくさんあります。しかし、この質問はサードパーティの jar ファイルに関するものです。

また、私の最初の質問のフレーズの 40% は、複雑さを測定するのが難しく、ファイル サイズとクラス数が実際には十分でない可能性があるという事実を誰もが十分に認識しているという事実を強調していることに注意してください。したがって、これについてこれ以上詳しく説明する必要はありません。

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

design-patterns - パターンは疎結合にどのように役立ちますか?

私はJavaパターンが初めてで、それがREAL WORLDにどのように適合するかを理解しようとしています. パターンに関するほとんどのサイトや本は、非プログラマーによって書かれているようです。

パターンが結合にどのように役立つかを定義しようとしていますが、これが今のところ私の定義です。私が知りたいのは、どのパターンが疎結合に本当に役立つか、そしてそれらは努力する価値があるかということです。また、これまでのところ私の定義/理解は正しいですか:

「カップリングとは、2 つ以上の異なるオブジェクトが相互にアクセスおよび/または相互作用する度合いです。」

2 つのオブジェクト間の密結合:

  • 参照/インスタンス化 : 多くの場所で、一方または両方のオブジェクトで、他のオブジェクトへの多くの敬意 (多対多の参照)

  • 複雑さ : 通常、多くのパラメーターが関数へのアクセス、またはさまざまな関数へのアクセスのシーケンスを必要としました。関連オブジェクトの共通インターフェースはありません。

  • 責任:アクセスされているオブジェクト、または別のオブジェクトで行うべき作業を行う。ネストされた関数に直接アクセスする。

  • パフォーマンス : 密結合が必要になる場合がある最大の理由ですが、最小化する必要があります。

2 つのオブジェクト間の疎結合:

  • 参照/インスタンス化: 少ないが、1 つのオブジェクトに少なくとも 1 つの参照があるが、両方にはない (1 ~ 少数の参照)
    役立つパターン: Factory、Singleton、Builder、Composite


  • 責任 : オブジェクトが実行する責任がある作業のみを行い、1 レベル下の機能にのみアクセスしようとします。
    役立つパターン: デコレーター、責任の連鎖、MVC

  • パフォーマンス : パフォーマンスが必要な場所を特定し、それらのクラスを一緒に保ちます。定義ごとに、密結合されたネストされたクラスとしても構いません。

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

algorithm - 3 配列の場合のコードの複雑さ

3 つの並べ替えられた配列 (昇順) が与えられ、距離が最小になるようにトリプレット (各配列から 1 つの要素) を見つける必要があります。距離は次のように定義されます。a[i], b[j]c[k]が 3 つの要素の場合

O(n)時間の複雑さで解を与えてください

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

sonarqube - 「複雑さ」の意味は何ですか - どのように計算するのですか?

タイトルの通り「複雑さ」の意味がわからない

ソナー結果の Web ページにアクセスすると、その計算方法を知りたくなるでしょう。

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

java - Time complexity - recursive call

I am trying to understand how to compute the time complexity of an algorithm .

I have this piece of code: This is the whole method:

I think the complexity is O(n). Am I right?

Thanks

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

python - アルゴリズムの時間計算量

リストを昇順でソートするための私のコードは次のとおりです。関数内で関数を使用しました。ここで、この関数の時間複雑度を計算したいと思います。私の側からは、関数「sort」がループを完了するたびに関数「unite」が呼び出されると計算しました。したがって、この関数では毎回 2 つの関数が使用されます。したがって、この関数の複雑さは O(nlog(n)) であると結論付けました。私はこの章が初めてです。したがって、このタイプの複雑さを計算する方法を知りたいです。上記の答えは私の概算です。そして、私は本当の答えを知りませんし、解決策やヒントもありません。ですから、あなたが与えるときはいつでもあなたの答えを説明してください. ありがとう。これが私のコードです。