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

最適化とは、方法または設計を改善することです。プログラミングでは、最適化は通常、アルゴリズムの速度を上げるか、必要なリソースを減らすという形を取ります。最適化のもう1つの意味は、機械学習で使用される数値最適化アルゴリズムです。

7
最適化が有効になっていると異なる浮動小数点結果-コンパイラのバグ?
以下のコードは、最適化の有無にかかわらずVisual Studio 2008で動作します。しかし、それは最適化なしのg ++​​でのみ機能します(O0)。 #include <cstdlib> #include <iostream> #include <cmath> double round(double v, double digit) { double pow = std::pow(10.0, digit); double t = v * pow; //std::cout << "t:" << t << std::endl; double r = std::floor(t + 0.5); //std::cout << "r:" << r << std::endl; return r / …
109 c++  optimization  g++  c++-faq 

9
.NETアプリケーションのメモリ使用量を削減しますか?
.NETアプリケーションのメモリ使用量を減らすためのヒントは何ですか?次の単純なC#プログラムについて考えてみます。 class Program { static void Main(string[] args) { Console.ReadLine(); } } タスクマネージャーは、x64のリリースモードでコンパイルされ、Visual Studioの外部で実行され、次のように報告します。 Working Set: 9364k Private Working Set: 2500k Commit Size: 17480k x86専用にコンパイルされている場合は少し優れています。 Working Set: 5888k Private Working Set: 1280k Commit Size: 7012k 次に、次のプログラムを試しましたが、同じことを行いますが、実行時の初期化後にプロセスサイズをトリミングしようとします。 class Program { static void Main(string[] args) { minimizeMemory(); Console.ReadLine(); } private static void …

8
辞書に追加するさまざまな方法
違いは何ですかDictionary.add(key, value)とはDictionary[key] = value? ArgumentException重複キーを挿入するときに最後のバージョンではがスローされないことに気付きましたが、最初のバージョンを優先する理由はありますか? 編集:これに関する信頼できる情報源はありますか?私はMSDNを試しましたが、それはいつものように野生のガチョウの追跡です:(

15
(x == 0 || x == 1)を単一の操作に簡略化することは可能ですか?
だから私はフィボナッチ数列のn番目の数をできるだけコンパクトな関数で書こうとしました: public uint fibn ( uint N ) { return (N == 0 || N == 1) ? 1 : fibn(N-1) + fibn(N-2); } しかし、これを変更することでこれをさらにコンパクトで効率的なものにできるかどうか疑問に思っています (N == 0 || N == 1) 単一の比較に。これを行うことができるいくつかの派手なビットシフト操作はありますか?

2
Django:整数を使用して外部キーを設定しますか?
モデルの整数IDを使用して外部キー関係を設定する方法はありますか?これは最適化を目的としています。 たとえば、従業員モデルがあるとします。 class Employee(models.Model): first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) type = models.ForeignKey('EmployeeType') そして EmployeeType(models.Model): type = models.CharField(max_length=100) 従業員のタイプを無制限にできる柔軟性が欲しいのですが、デプロイされたアプリケーションにはタイプが1つしかない可能性が高いので、IDをハードコードして関係をこのように設定する方法があるかどうか疑問に思っています。これにより、最初にEmployeeTypeオブジェクトを取得するdb呼び出しを回避できます。

3
なぜ私のアプリケーションは、その寿命の24%をnullチェックに費やしているのですか?
パフォーマンスが重要なバイナリ決定ツリーがあり、この質問を1行のコードに集中したいと思います。バイナリツリーイテレータのコードは、それに対してパフォーマンス分析を実行した結果です。 public ScTreeNode GetNodeForState(int rootIndex, float[] inputs) { 0.2% ScTreeNode node = RootNodes[rootIndex].TreeNode; 24.6% while (node.BranchData != null) { 0.2% BranchNodeData b = node.BranchData; 0.5% node = b.Child2; 12.8% if (inputs[b.SplitInputIndex] <= b.SplitValue) 0.8% node = b.Child1; } 0.4% return node; } BranchDataはフィールドであり、プロパティではありません。インライン化されないリスクを防ぐためにこれを行いました。 BranchNodeDataクラスは次のとおりです。 public sealed class BranchNodeData { /// …

25
Java HashMapパフォーマンスの最適化/代替
大きなHashMapを作成したいのですが、put()パフォーマンスが十分ではありません。何か案は? 他のデータ構造の提案も歓迎しますが、Javaマップの検索機能が必要です。 map.get(key) 私の場合、2,600万エントリのマップを作成します。標準のJava HashMapを使用すると、200万から300万の挿入後、書き込み速度が耐えられないほど遅くなります。 また、キーに異なるハッシュコードの分布を使用することが役立つかどうか誰かが知っていますか? 私のハッシュコード方法: byte[] a = new byte[2]; byte[] b = new byte[3]; ... public int hashCode() { int hash = 503; hash = hash * 5381 + (a[0] + a[1]); hash = hash * 5381 + (b[0] + b[1] + b[2]); return hash; } 同等のオブジェクトが同じハッシュコードを持つようにするために、additionの連想プロパティを使用しています。配列は0から51の範囲の値を持つバイトです。値はどちらの配列でも1回だけ使用されます。a配列に同じ値(どちらの順序でも)が含まれ、b配列にも同じ場合、オブジェクトは等しくなります。したがって、a …

2
libc ++での短い文字列最適化のメカニズムは何ですか?
この回答は、短い文字列の最適化(SSO)の概要を示しています。ただし、実際に、特にlibc ++実装でどのように機能するかを詳しく知りたいのですが。 SSOの対象となるには、文字列はどのくらい短い必要がありますか?これはターゲットアーキテクチャに依存しますか? 文字列データにアクセスするとき、実装はどのように短い文字列と長い文字列を区別しますか?それは同じくらい簡単m_size <= 16ですか、それとも他のメンバー変数の一部であるフラグですか?(私はそれm_sizeまたはその一部が文字列データを格納するために使用されることもあると思います) 私がこの質問をlibc ++に対して特別に尋ねたのは、それがSSOを使用していることがわかっているためです。これは、libc ++ホームページにも記載されています。 ソースを確認した後の観察結果を次に示します。 libc ++は、文字列クラスの2つのわずかに異なるメモリレイアウトでコンパイルできます_LIBCPP_ALTERNATE_STRING_LAYOUT。これはフラグによって制御されます。どちらのレイアウトでも、リトルエンディアンマシンとビッグエンディアンマシンが区別され、合計4つの異なるバリアントが存在します。以下の説明では、「通常の」レイアウトとリトルエンディアンを想定します。 さらにそれsize_typeが4バイトでvalue_type1バイトであると仮定すると、これは文字列の最初の4バイトがメモリ内でどのように見えるかです。 // short string: (s)ize and 3 bytes of char (d)ata sssssss0;dddddddd;dddddddd;dddddddd ^- is_long = 0 // long string: (c)apacity ccccccc1;cccccccc;cccccccc;cccccccc ^- is_long = 1 短い文字列のサイズは上位7ビットであるため、アクセスするときにシフトする必要があります。 size_type __get_short_size() const { return __r_.first().__s.__size_ >> 1; } 同様に、長い文字列の容量のゲッターとセッターは__long_mask、is_longビットを回避するために使用します。 私はまだ私の最初の質問に対する答えを探しています。つまり__min_cap、異なる文字列に対して、どのような値、短い文字列の容量がとるのでしょうか? その他の標準ライブラリの実装 …

4
GCC最適化レベルはいくつありますか?
どのように多くのGCCの最適化のレベルがありますか? gcc -O1、gcc -O2、gcc -O3、gcc -O4を試しました 非常に大きな数を使用すると、機能しません。 しかし、私は試しました gcc -O100 そしてそれはコンパイルされました。 最適化レベルはいくつありますか?

5
ロガーslf4jには、文字列連結ではなく{}を使用してフォーマットする利点
{}文字列連結の代わりに使用する利点はありますか? slf4jの例 logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT); の代わりに logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT); 構成ファイルによっては、実行時にパラメーターの評価(および文字列の連結)を回避できるため、速度の最適化が重要だと思います。ただし、使用できるパラメーターは2つだけであり、文字列の連結以外に選択肢がない場合があります。この問題についての意見が必要です。


11
文字列の最初の文字を小文字にする最も効率的な方法は?
String小文字の最初の文字を作成する最も効率的な方法は何ですか? これを行う方法はいくつか考えられます。 使用charAt()してsubstring() String input = "SomeInputString"; String output = Character.toLowerCase(input.charAt(0)) + (input.length() > 1 ? input.substring(1) : ""); またはchar配列を使用する String input = "SomeInputString"; char c[] = input.toCharArray(); c[0] = Character.toLowerCase(c[0]); String output = new String(c); これを達成するための素晴らしい方法は他にもたくさんあると思います。何がお勧めですか?

12
一般にどの列が適切なインデックスを作成しますか?
「インデックスとは何ですか?インデックスを使用してデータベースのクエリを最適化するにはどうすればよいですか?」のフォローアップとして、インデックスについて学習しようとしているところ、どのカラムがインデックス候補として適していますか?特にMS SQLデータベースについては? いくつかのグーグルの後、私が読んだすべては、一般的に増加し、一意である列が良いインデックスを作成することを示唆しています(MySQLのauto_incrementのようなもの)、私はこれを理解していますが、MS SQLを使用しており、主キーにGUIDを使用しているため、そのインデックスはGUID列にはメリットがありません...

2
prefetchPlugin&analyzeツールを使用してWebpackのビルド時間を最適化するにはどうすればよいですか?
これまでの研究: webpackのwikiが言うように、分析ツールを使用してビルドのパフォーマンスを最適化することが可能です。 から:https : //github.com/webpack/docs/wiki/build-performance#hints-from-build-stats ビルド統計からのヒント ビルドを視覚化し、ビルドサイズとビルドパフォーマンスを最適化する方法についてのヒントを提供する分析ツールがあります。 webpack --profile --json> stats.jsonを実行して、必要なJSONファイルを生成できます 私は(統計情報ファイルを生成し、ここで利用可能)のWebPACKのanalizeツールにアップロードし、下のヒントのタブ私はprefetchPluginを使用するように言わ: から:http : //webpack.github.io/analyse/#hints 長いモジュール構築チェーン プリフェッチを使用して、ビルドのパフォーマンスを向上させます。チェーンの途中からモジュールをプリフェッチします。 prefechPluginで利用できる唯一のドキュメントは次のとおりです。 から:https : //webpack.js.org/plugins/prefetch-plugin/ PrefetchPlugin new webpack.PrefetchPlugin([context], request) 通常のモジュールに対する要求。これは、モジュールが必要になる前に解決され、ビルドされます。これにより、パフォーマンスが向上します。最初にビルドのプロファイルを作成して、先読みの賢いポイントを特定してください。 私の質問: prefetchPluginを適切に使用するにはどうすればよいですか? 分析ツールで使用する適切なワークフローは何ですか? prefetchPluginが機能するかどうかを確認するにはどうすればよいですか?どうすれば測定できますか? チェーンの途中からモジュールをプリフェッチするとはどういう意味ですか? いくつかの例を本当に感謝します この質問を、prefechPluginと分析ツールを使用したい次の開発者にとって貴重なリソースにするのを手伝ってください。ありがとうございました。

2
すべてのJVMフラグを出力
興味深いJVMフラグが見つかりました: java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version それは何百ものさまざまなオプションを印刷します。また、JVMの動作の診断に役立つデフォルト値も出力します。別の興味深いフラグは次のとおりです。 -XX:+UnlockExperimentalVMOptions 誰かがそれらのそれぞれを説明するドキュメントを知っていますか?

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