compiler-optimization

    1

    1答えて

    assert*が-Oで投げ捨てられ、precondition*が-Ouncheckedに設定されていない限り保持されていることがわかります。 ただし、リリースビルドの新しい既定値はwhole-module optimization-wmoです。 precondition*モジュール全体最適化が有効な場合、アサーションは保持されますか?

    3

    1答えて

    コンパイラは、多重定義された接尾辞演算子を最適化し、接頭辞演算子に置き換えることを許可されていますか?次のコードでは、ほとんどのコンパイラは++iとしてi++を扱い、同じアセンブリを生成し、例えば (コンパイラが機能過負荷に何をするかを知っているものとします)。 for(int i=0; i<5; i++) printf("*"); 次に、次のコードについても同様に適用できますか?

    2

    1答えて

    私は、現時点では、いくつかの型指定されたラケットを学んでいると私はやや哲学的ジレンマを持っている: ラケットは、言語の開発フレームワークであることを主張し、型指定されたラケットは、その上に実装されそのような言語です。ドキュメントでは、型の使用により、コンパイラはより良い/より良い最適化を行うことができると述べています。 具体的な質問: これらの最適化はどこで行われますか?コンパイルにおいて 1)/

    3

    4答えて

    2つのメモリブロックを割り当てるとします。 私は何かを保存し、この保存されたデータを使用するために、最初のメモリブロックを使用します。 次に、2番目のメモリブロックを使用して同様のことを行います。 { int a[10]; int b[10]; setup_0(a); use_0(a); setup_1(b); use_1(b); } || compiler optimiz

    6

    1答えて

    Visual C++(VS2017 RC)で生成されたコードを見て、単純なケースで動的分岐(仮想呼び出し)を見ていると非常に驚いていました。何devirtualizationが発生していないように見える、一時的およびメンバーケース付き https://godbolt.org/g/RmUku2 : struct Base { virtual void foo() = 0; }; s

    0

    2答えて

    この質問は純粋に好奇心ではなく、私は答えがコンパイラに依存していると確信しています。これは極端なマイクロ最適化でもあり、ほとんど確実に維持できないコードにつながります。 CPUは明らかに各計算を実行してそれをどこかに格納する必要があります。多分それは機能的に同じです。 これまでのところ、変数の使用量を減らしても本質的に高速の実行コードが得られるのではないかという疑問がありました。例えば、長い計算の

    0

    1答えて

    私の質問はCUDAアプリケーションを作成していますが、メインのコンピュータがWindows PC(Visual Studio 2013)であるため、そこにアプリケーションを開発しました。しかし、最終的なアプリケーションは* nixサーバーにデプロイされます。 私の質問は次のとおりです。 にVisual Studio 2013 optimziationフラグ/大井と/オックスは(完全な最適化)(組み

    0

    1答えて

    共通の部分式を含むかなり長い式を計算する必要があります。たとえば、以下の2つの式を考える:は double dfdx1 = 2 * (-x2 + x1 - sin(b2)*n34 + cos(b2)*sin(c2)*n24 - cos(b2)*cos(c2)*n14 + sin(b1)*m34 - cos(b1)*sin(c1)*m24 + cos(b1)*cos(c1)*m14); doub

    0

    1答えて

    私はC言語でRH850コントロールとコンパイラgreenHillsを使用しています。範囲チェックでは次のようになります。 if ((x>=2) && (x<=5)) y=1 Osizeオプションでコンパイルされます。それがコンパイルされたとき、このように見えた: zxb r7 addi -2,r7,r1 cmp 3,r1 bnh .L1295 .L1295がy=1のラベル(

    3

    1答えて

    class base { public: std::string name() { return basename; } virtual void print(std::ostream &os) { os << basename; } private: std::string basename = "base\n"; }; class derived : public base