タグ付けされた質問 「efficiency」

このタグは、さまざまなシステムやアルゴリズムの効率を比較したり、効率を測定する方法を参考にして使用します。Big O表記は、複雑さに関連していますが、効率に影響を与える可能性があります。

6
プログラマーにとって効率的なグーグル学習の重要性は?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 これは、Googleの使用がプログラマにとって良いか悪いかについての議論ではありません。 あなたの答えでそうすることを控えてください。 最近ではほとんどの人(インターネットを使用する大多数)がGoogleを使用しています。私が話しているのは、これ、より効率的な Google検索のための20のヒントです。 質問:これはプログラマーにとってどれほど重要だと思いますか? 質問:経験豊富な検索(問題に関するより多くの知識)は、効率的な検索、つまり、経験豊富な人による検索とよりよく検索できる人による検索とをどのように比較しますか。収量または品質の面では? 質問:これはプログラミング学校、インターン、または研修生レベルで教えられるべきだと思いますか? 問題を解決するためにGoogleに依存するようになるという議論はご遠慮ください。1)トピックのポイントではありません2)問題を解決できない場合、ほとんどの場合彼らは雇われません。 質問:これは最近、良いプログラミング学校で教えられていますか? 注意: 確かに、この記事は新しいものではありません。 サイト上の質問のいくつかは、それをもっとうまく検索できたプログラマーが投稿した簡単なGoogle検索で回答されました。回答に対する個人的なタッチの期待に関係なく、これらのほとんどは直接または失敗した検索に対する真の回答でした。 これは、優秀なプログラマーにとっては一般的な知識かもしれません。しかし、私見はこれは平均的なケースではありません。 違いがあります グーグル そして効率的な検索

5
試しに最終的に高価です
関数を終了する前にリソースのクリーンアップを行う必要があるコードの場合、これらの2つの方法の間に大きなパフォーマンスの違いがあります。 すべてのreturnステートメントの前にリソースをクリーニングする void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); } finallyブロックでのリソースのクリーニング void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == …

1
C#辞書の効率
C#辞書は、何かが存在するかどうかなどを見つける簡単な方法です。どのように機能するかについては質問があります。辞書の代わりにArrayListを使用するとしましょう。ContainsKey(または別の言語の同等のメソッド)を使用する代わりに、ArrayListをループして、そこに何かが存在するかどうかを確認します(または、データが並べ替えられているか、類似のものであればバイナリ検索を実行します)。効率の違いは何ですか?ContainsKeyメソッドは、キーをループして検索しているものが存在するかどうかをチェックするのではなく、より効率的な方法を使用していますか? 私が持っているデータの種類に対応する特定のハッシュ関数を作成し、そのデータのセット用に特別に設計されている場合、そのハッシュ関数はデータをループするよりも実際に高速です。しかし、辞書は一般的です。ContainsKeyメソッドは、取得するデータに固有ではなく、一般的な検索メソッドです。 基本的に私が求めているのは。辞書はプログラマーに役立ちます。それらには、多くのことを支援するメソッドが含まれており、文字列を整数(キーと値)などと組み合わせています。しかし、効率については、彼らは何を提供していますか?持つに違い何dictionary対ArrayListのをstructs(string,int)

2
償却分析?(最悪の場合の性能保証)
償却分析とは何ですか?また、プログラムで最悪の場合のパフォーマンス保証を達成するのにどのように役立ちますか? 私は、次のテクニックがプログラマーが最悪のパフォーマンス保証を達成するのを助けることができると読んでいました(つまり、私自身の言葉:プログラムの実行時間が最悪のキャストの実行時間を超えないことを保証します): ランダム化アルゴリズム(たとえば、最悪の場合、クイックソートアルゴリズムは2次ですが、入力をランダムに並べると、実行時間が線形であることが確率的に保証されます) 操作のシーケンス(分析では、データとクライアントが実行した操作のシーケンスの両方を考慮する必要があります) 償却分析(パフォーマンス保証を提供する別の方法は、すべてのオペレーションの合計コストをオペレーション数で割って追跡することにより、コストを償却することです。この設定では、平均コストを維持しながら、いくつかの高価なオペレーションを許可できますつまり、少数の高価な操作のコストを、その一部を多数の安価な操作のそれぞれに割り当てることで分散します) 著者は、償却分析を達成する方法の1つの例として、Stackの配列データ構造のサイズ変更の使用に言及しましたが、償却分析とは何か、実際にはどのようにできるかはまだわかりません最悪の結果を達成するために実装か(データ構造?アルゴリズム?) -キャストパフォーマンス保証

5
テスト/テスターの効率の良い尺度は何ですか?
私は、QA組織としてのテスト効率の測定に関する経営陣との議論に参加しようとしています。この背後にある主な理由は、私たちのチームの半分が外注されており、私たちのビジネスは私たちがどれほど効果的/効率的であるかのいくつかのメトリックを提供したいので、私たちは請負業者のサービス契約と契約パラメータを交渉するための基礎データを持っている。 このテーマについて私が見つけた意見のほとんどは、開発者の効率性に関するものです。コードの行、配信されたストーリーポイント、導入された欠陥などです。 しかし、テスターはどうですか?テストは主に要件ベースで、手動、半自動、自動のテストが混在しています(すべてを自動化していないためではなく、テストシステムで自動化できないものがあるためです)。

5
新しい言語を学ぶのは早すぎますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 個人的な状況:私は大学で過去6か月間、正式にC ++を学んでいます。これに先立ち、私は1年間JavaScriptに手を出しました。今、私は1か月の休学中にPythonを学ぶことを検討しています。 学習プロセスの早い段階で焦点を分割することにより、学習の効率が低下しますか?C ++を続けて1か月過ごす必要がありますか?または、新しい言語を学ぶのに早すぎることはありませんか?

3
コード行の寿命をどのように推定できますか?
私は、オープンソースプロジェクトのコードの寿命を分析する方法、つまり特定のコード行がアクティブで使用中の期間を把握しようとしています。 私の現在の考え方は、コードの寿命は最初にコミットされたときに始まり、次のいずれかが発生したときに終わるというものです。 編集または削除され、 ビルドから除外、 ビルド内のコードは、一定期間(1年など)維持されません。 注:「編集」が「死」としてカウントされる理由の明確化として、編集された行は「新しい」世代、またはコード行としてカウントされます。また、これを行う簡単な方法がない限り、系統の寿命、または先祖からの降下の説明はありません。 コードの寿命を決定するものは他にありますか?

6
プログラミングに特化したノートブックはありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 6年前休業。 エンジニアリングペーパーが存在することは知っていますが、ノート/疑似コード/デザイン用のプログラマー固有のノートブックを作成している会社はありますか? 紙は私が物事を概説するのに好ましい方法なので、ツールのリストに専用のパッドを追加することは非常に有益です。

2
使用するmakeスレッドはいくつありますか?
デスクトップ/ラップトップコンピューターで大規模なシステムを(再)ビルドするとき、次のようmakeに、複数のスレッドを使用してコンパイル速度を上げるように指示します。 $ make -j$[ $K * $C ] どこ$Cの数を示すことになっているコアながら、マシンが持っている(私たちは一桁と番号であることを仮定することができ)$K、私は異なるものだ2と4、私の気分に応じました。 したがって、たとえば、make -j124つのコアがある場合、make最大12のスレッドを使用するように指示することができます。 私の理論的根拠は、私が$Cスレッドのみを使用する場合、プロセスがドライブからデータをフェッチするのにビジーである間、コアはアイドルになるということです。しかし、スレッドの数を制限しない場合(つまりmake -j)、コンテキストの切り替えに時間を浪費したり、メモリを使い果たしたり、さらに悪いことにリスクを冒したりします。マシンに$Mギグのメモリがあると仮定しましょう($Mは10のオーダーです)。 したがって、実行するスレッドの最も効率的な数を選択するための確立された戦略があるかどうか疑問に思っていました。

5
この問題の純粋に機能的な解決策は、命令と同じくらいクリーンであることができますか?
私はPythonで次のような練習をしています。 多項式は、指数によって指数が決定されるような係数のタプルとして与えられます。例:(9,7,5)は、9 + 7 * x + 5 * x ^ 2を意味します 与えられたxの値を計算する関数を書く 最近関数型プログラミングに夢中になっているので、私は書きました def evaluate1(poly, x): coeff = 0 power = 1 return reduce(lambda accu,pair : accu + pair[coeff] * x**pair[power], map(lambda x,y:(x,y), poly, range(len(poly))), 0) 私はそれを読めないと思うので、私は書きました def evaluate2(poly, x): power = 0 result = 1 return reduce(lambda accu,coeff …

4
Javaで区切られた文字列を分割する最も簡単な方法
区切られた文字列で複数列のソート機能を提供するコンパレータを構築しています。私は現在、生の文字列をトークンに分割するための好ましい選択肢として、Stringクラスのsplitメソッドを使用しています。 これは、生の文字列を文字列配列に変換するのに最適な方法ですか?何百万もの行を並べ替えるので、アプローチが重要だと思います。 それはうまく動作するようで非常に簡単ですが、Javaでより高速な方法があるかどうかは不明です。 これが私のコンパレータでのソートの仕組みです: public int compare(String a, String b) { String[] aValues = a.split(_delimiter, _columnComparators.length); String[] bValues = b.split(_delimiter, _columnComparators.length); int result = 0; for( int index : _sortColumnIndices ) { result = _columnComparators[index].compare(aValues[index], bValues[index]); if(result != 0){ break; } } return result; } さまざまなアプローチのベンチマークを行った後、信じられないかもしれませんが、splitメソッドは最新バージョンのJavaを使用するのが最も速かったです。ここに私の完成したコンパレータをダウンロードできます:https : //sourceforge.net/projects/multicolumnrowcomparator/

4
このデータを保存する最も効率的な方法は何ですか?
私はいくつかの古いVBコードの書き換えを担当しています。私はそれがどのように機能するかを理解していますが、彼らがしたことを行うためのはるかに効率的な方法があるように感じます。それが何なのかわからない。これは、データ要件の点で私がする必要があるものと本当に似ている不自然な例です。 ユーザーは、GUIで車のメーカー、メーカー、モデル、色を選択する必要があります。次のような大きなテキストファイルがあります。 Ford Truck F150 red Ford Truck F150 blue Ford Truck F150 black Ford Truck F150 silver Ford Truck F250 red Ford Truck F250 green Ford Sedan Taurus red Ford Sedan Taurus green Ford Sedan Taurus white Ford... ... Subaru SUV Forester blue Subaru SUV Forester red Subaru SUV …

3
計算された値と単純な読み取り-ドメイン主導の設計の悩​​みの種!
私が絶えず直面している問題は、データストアに対して効率的に機能しながら、ドメインロジックによって駆動される計算値を処理する方法です。 例: リポジトリからサービスを介して製品のリストを返しています。このリストは、クライアントが送信したリクエストDTOからのページネーション情報によって制限されます。さらに、DTOはソートパラメータ(クライアントフレンドリーな列挙型)を指定します。 単純なシナリオでは、すべてがうまく機能します。サービスはページングとソートの式をリポジトリに送信し、リポジトリは効率的なクエリをDBに発行します。 ただし、ドメインモデルからメモリに生成された値を並べ替える必要がある場合は、すべてが機能しなくなります。たとえば、Productクラスには、ビジネスロジックに基づいてブール値を返すIsExpired()メソッドがあります。今、私はレポレベルでソートおよびページングすることはできません-それはすべてメモリ内で行われ(非効率的)であり、私のサービスはこれらのパラメーターをレポに発行するタイミングとソート/ページングを実行するタイミングの複雑さを知る必要があります自体。 私にとって意味があると思われる唯一のパターンは、エンティティの状態をdbに格納することです(IsExpired()を読み取り専用フィールドにして、保存する前にドメインロジックを介して更新します)。このロジックを別の「読み取りモデル/ dto」と「レポート」リポジトリに分離すると、モデルが必要以上に貧弱になります。 ところで、このような計算で私が見たすべての例は、実際にはインメモリ処理に頼っており、長期的には効率がはるかに低いという事実を無視しているようです。多分私は時期尚早に最適化していますが、それはちょうど私と一緒に座っていません。 DDDを含むほぼすべてのプロジェクトで一般的であると確信しているので、他の人がこれをどのように処理したかを聞いてみたいです。

9
大きなデータセットをMySQLデータベース(または一般的なデータベース)に挿入する最良の方法は何ですか
PHPプロジェクトの一部として、MySQLデータベースに行を挿入する必要があります。私は明らかにこれに慣れていますが、これには1つのクエリで90列に挿入する必要がありました。結果のクエリは、恐ろしくてモノリシックに見えます(特に、PHP変数を値として挿入します)。 INSERT INTO mytable (column1, colum2, ..., column90) VALUES ('value1', 'value2', ..., 'value90') そして、私はこれを正しい方法で行っていないのではないかと心配しています。また、すべてを入力するだけでも長い(退屈な)時間を要し、テストコードの記述も同じように退屈なものになると思います。 専門家はこれらのクエリをすばやく作成してテストするにはどうすればよいですか?プロセスをスピードアップできる方法はありますか?
9 php  mysql  efficiency 

3
JavaのStringクラスがより効率的なindexOf()を実装しないのはなぜですか?
スタックオーバーフローに関する以下の質問の後に /programming/5564610/fast-alernative-for-stringindexofstring-str なぜjava(少なくとも6つ)がより効率的な実装を使用しないのかと疑問に思いましたか? コードは次のとおりです。 java.lang.String#indexOf(String str) 1762 static int indexOf(char[] source, int sourceOffset, int sourceCount, 1763 char[] target, int targetOffset, int targetCount, 1764 int fromIndex) { 1765 if (fromIndex >= sourceCount) { 1766 return (targetCount == 0 ? sourceCount : -1); 1767 } 1768 if (fromIndex < 0) { 1769 …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.