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

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

14
C#のインライン関数?
C#で「インライン関数」をどのように実行しますか?私はその概念を理解していないと思います。彼らは匿名メソッドのようですか?ラムダ関数は好きですか? 注:回答は、ほぼ完全に関数をインライン化する機能を扱っています。つまり、「関数呼び出しサイトを呼び出し先の本文で置き換える手動またはコンパイラの最適化」です。匿名(別名ラムダ)関数に興味がある場合は、@ jalfの回答を参照してください。または、誰もが話し続けている「ラムダ」とは何ですか?。
276 c#  optimization  inline 

30
ループは逆に本当に高速ですか?
これを何度も聞いたことがあります。逆算すると、JavaScriptループは本当に速くなりますか?もしそうなら、なぜですか?逆ループの方が速いことを示すテストスイートの例をいくつか見ましたが、その理由についての説明はありません。 これは、ループが終了したかどうかを確認するためにチェックするたびにプロパティを評価する必要がなくなり、最終的な数値に対してチェックするだけだからだと思います。 すなわち for (var i = count - 1; i >= 0; i--) { // count is only evaluated once and then the comparison is always on 0. }


10
HTMLで画像を別の画像の上に配置するにはどうすればよいですか?
私はRailsプログラミングの初心者で、ページに多くの画像を表示しようとしています。一部の画像は他の画像の上に配置されます。簡単にするために、青い四角形の右上隅に赤い四角形が表示されている(ただし、角がきついではない)青い四角形が必要だとします。パフォーマンスの問題のため、(ImageMagickなどで)合成を回避しようとしています。 重なり合う画像を相対的に配置したいだけです。 より難しい例として、より大きな画像の中に配置された走行距離計を想像してみてください。6桁の場合、100万の異なる画像を合成するか、すべてをオンザフライで実行する必要があります。必要なのは、6つの画像を他の画像の上に配置することだけです。

24
random.choiceの加重バージョン
random.choiceの加重バージョンを作成する必要がありました(リストの各要素は、選択される確率が異なります)。これは私が思いついたものです: def weightedChoice(choices): """Like random.choice, but each element can have a different chance of being selected. choices can be any iterable containing iterables with two items each. Technically, they can have more than two items, the rest will just be ignored. The first item is the thing being chosen, the …

12
C ++でバイナリファイルを非常に高速に書き込む
SSD(ソリッドステートドライブ)に大量のデータを書き込もうとしています。そして膨大な量とは80GBを意味します。 私は解決策を求めてウェブを閲覧しましたが、私が思いついたのはこれでした: #include <fstream> const unsigned long long size = 64ULL*1024ULL*1024ULL; unsigned long long a[size]; int main() { std::fstream myfile; myfile = std::fstream("file.binary", std::ios::out | std::ios::binary); //Here would be some error handling for(int i = 0; i < 32; ++i){ //Some calculations to fill a[] myfile.write((char*)&a,size*sizeof(unsigned long long)); } myfile.close(); …

7
Clang vs GCC-どちらがより良いバイナリを生成しますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 3年前休業。 この質問を改善する 私は現在GCCを使用していますが、最近Clangを発見し、切り替えについて考えています。ただし、決定的な要素が1つあります- gcc -O3生成されるバイナリの品質(速度、メモリフットプリント、信頼性)。 ClangはGCCよりも優れたコンパイル速度と低いコンパイル時のメモリフットプリントを誇りますが、結果として得られるコンパイル済みソフトウェアのベンチマーク/比較に本当に興味があります。


5
最適化レベル-O3はg ++で危険ですか?
私はさまざまな情報源から聞いたことがあります(ほとんどが私の同僚からのものです)。 -O3 g ++のはどういうわけか「危険」であり、必要であることが証明されない限り一般に回避すべきであるとています。 これは本当ですか、もしそうなら、なぜですか?私だけに固執する必要があり-O2ますか?


4
役に立たないMOV命令を導入すると、x86_64アセンブリでタイトなループが加速するのはなぜですか?
バックグラウンド: 組み込みアセンブリ言語を使用して一部のPascalコードを最適化しているときに、不要なMOV命令に気づき、それを削除しました。 驚いたことに、不要な命令を削除すると、プログラムの速度が低下しました。 任意の、役に立たないMOV命令を追加すると、パフォーマンスがさらに向上することがわかりました。 効果は不安定で、実行順序に基づいて変化します。同じジャンク命令が1行で上または下に転置されると、速度が低下します。 CPUがあらゆる種類の最適化と合理化を行うことを理解していますが、これはより黒魔術のように見えます。 データ: 私のコードのバージョンは、時間を実行するループの途中で3つのジャンク操作を条件付きでコンパイルします2**20==1048576。(周囲のプログラムはSHA-256ハッシュを計算するだけです)。 私のかなり古いマシン(Intel(R)Core(TM)2 CPU 6400 @ 2.13 GHz)での結果: avg time (ms) with -dJUNKOPS: 1822.84 ms avg time (ms) without: 1836.44 ms プログラムはループで25回実行され、実行順序は毎回ランダムに変化しました。 抜粋: {$asmmode intel} procedure example_junkop_in_sha256; var s1, t2 : uint32; begin // Here are parts of the SHA-256 algorithm, in Pascal: // …

3
512x512の行列の転置が、513x513の行列の転置よりもはるかに遅いのはなぜですか?
異なるサイズの正方行列でいくつかの実験を行った後、パターンが思い付きました。常に、サイズの行列の転置は、サイズの行列の2^n転置よりも遅くなります2^n+1。の値が小さい場合n、違いは重要ではありません。 ただし、値が512を超えると大きな違いが生じます。(少なくとも私にとっては) 免責事項:要素の二重交換のため、関数が実際に行列を転置しないことは知っていますが、違いはありません。 コードに従います: #define SAMPLES 1000 #define MATSIZE 512 #include <time.h> #include <iostream> int mat[MATSIZE][MATSIZE]; void transpose() { for ( int i = 0 ; i < MATSIZE ; i++ ) for ( int j = 0 ; j < MATSIZE ; j++ ) { int aux = mat[i][j]; …

10
データベースへのJSONの保存と各キーの新しい列の作成
テーブルにユーザー関連データを格納する次のモデルを実装しています。2つの列uid(主キー)とmeta、ユーザーに関する他のデータをJSON形式で格納する列があります。 uid | meta -------------------------------------------------- 1 | {name:['foo'], | emailid:['foo@bar.com','bar@foo.com']} -------------------------------------------------- 2 | {name:['sann'], | emailid:['sann@bar.com','sann@foo.com']} -------------------------------------------------- これは良い方法である(性能面、デザイン的に)テーブルのような多くの列を持っています1列あたりの財産モデル、よりuid、name、emailid。 最初のモデルで気に入っているのは、制限はなく、できるだけ多くのフィールドを追加できることです。 また、最初のモデルを実装したので不思議に思っていました。「foo」のような名前を持つすべてのユーザーをフェッチしたいなど、クエリをどのように実行しますか? 質問 -JSONまたはフィールドごとの列を使用して、データベースにユーザー関連データ(フィールドの数は固定されていないことに注意してください)を格納するためのより良い方法はどれですか?また、最初のモデルが実装されている場合、上記のようにデータベースを照会する方法は?クエリで検索される可能性のあるすべてのデータを別の行に格納し、他のデータをJSON(別の行)に格納して、両方のモデルを使用する必要がありますか? 更新 検索を実行する必要がある列が多すぎないので、両方のモデルを使用するのが賢明ですか?検索する必要があるデータの列ごとのキーと他の人のJSON(同じMySQLデータベース内)

12
JavaScriptをHTMLファイルのどこに配置しますか?
かなり重いJavaScriptファイルがあり、およそ100kb程度に圧縮されているとしましょう。ファイルとは<script src="...">、HTML自体に貼り付けられるのではなく、を介してリンクされる外部ファイルであることを意味します。 これをHTMLに配置するのに最適な場所はどこですか? <html> <head> <!-- here? --> <link rel="stylesheet" href="stylez.css" type="text/css" /> <!-- here? --> </head> <body> <!-- here? --> <p>All the page content ...</p> <!-- or here? --> </body> </html> 各オプション間に機能的な違いはありますか?

22
Swiftのコンパイル時間が非常に遅いのはなぜですか?
Xcode 6 Beta 6を使用しています。 これはしばらくの間私を悩ませてきたものですが、それは現在ほとんど使用することができない状態に達しています。 私のプロジェクトは、65個のSwiftファイルといくつかのブリッジされたObjective-Cファイル(まさしく問題の原因ではありません)の適切なサイズになり始めています。 Swiftファイルを少し変更すると(アプリでほとんど使用されないクラスに単純な空白を追加するなど)、指定したターゲットのSwiftファイル全体が再コンパイルされます。 より詳細な調査の結果、コンパイラ時間のほぼ100%を占めているのは、CompileSwiftXcodeがswiftcターゲットのすべてのSwiftファイルに対してコマンドを実行するフェーズであることがわかりました。 さらに調査を行ったところ、アプリデリゲートをデフォルトのコントローラーでのみ維持した場合、コンパイルは非常に高速でしたが、プロジェクトファイルを追加していくと、コンパイル時間が非常に遅くなり始めていました。 現在、ソースファイルは65個しかないため、毎回コンパイルするのに約8/10秒かかります。それほど迅速ではありません。 私は除いて、この問題について話して任意のポスト見ていないこれを、私はその場合には一つだけだ場合、私は思ったんだけどだから、Xcodeの6の古いバージョンでした。 更新 Alitfire、Euler、CryptoSwiftのようなGitHub上のいくつかのSwiftプロジェクトを確認しましたが、実際に比較するのに十分なSwiftファイルがありませんでした。適切なサイズで開始していることがわかった唯一のプロジェクトはSwiftHNでした。ソースファイルが12個しかなかったとしても、同じことを確認できましたが、1つの単純なスペースとプロジェクト全体で再コンパイルが必要でした。少し時間(2/3秒)。 アナライザーとコンパイルの両方が非常に高速であるObjective-Cコードと比較すると、これはSwiftが大きなプロジェクトを処理することができないように感じますが、私が間違っていると言ってください。 Xcode 6 Beta 7での更新 まだ改善はありません。これはとんでもないことになり始めています。#importSwiftに欠けているので、Appleがこれをどのように最適化できるかは本当にわかりません。 Xcode 6.3およびSwift 1.2での更新 Appleはインクリメンタルビルド(および他の多くのコンパイラ最適化)を追加しました。これらの利点を確認するには、コードをSwift 1.2に移行する必要がありますが、AppleはXcode 6.3にそのためのツールを追加しました。 しかしながら 私のようにあまり早く喜んではいけません。ビルドをインクリメンタルにするために使用するグラフソルバーは、まだ十分に最適化されていません。 実際、最初に、関数のシグネチャの変更は確認されないため、1つのメソッドのブロックにスペースを追加すると、そのクラスに依存するすべてのファイルが再コンパイルされます。 第二に、変更がそれらに影響を与えない場合でも、再コンパイルされたファイルに基づいてツリーを作成するようです。たとえば、これらの3つのクラスを別のファイルに移動した場合 class FileA: NSObject { var foo:String? } class FileB: NSObject { var bar:FileA? } class FileC: NSObject { var baz:FileB? } …

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