問題タブ [compile-static]
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.
groovy - Java 7も使用している場合、Groovyの@CompileStaticを使用する必要があります
「Groovy2.0の新機能」を読みましたが、@CompileStaticをいつ使用するかについて少し混乱しています。この記事では@CompileStatic
、Java7の動的な呼び出し部分を利用できなかった開発者向けにアノテーションが追加されたと述べています。
したがって、パフォーマンスの向上を求める開発者は、JDK 7で実行できない場合、Groovy 2.0で大きな変更は見られません。幸い、Groovy開発チームは、タイプチェックを許可することで、これらの開発者が他の利点の中でも興味深いパフォーマンスの向上を得ることができると考えました。静的にコンパイルされるコード。
私の質問は、JDK 7を使用していて、指示に従って--indy
フラグを追加する場合@CompileStatic
、パフォーマンスの向上を確認するために追加する必要がありますか? このブログは私がそうすることを示唆していますが、彼がEclipse内でそれを行ったことを考えると、彼が正しくコンパイルしたかどうかはわかりません。
更新:フィボナッチコードのさまざまな順列を実行したときの統計は次のとおりです。
注:機能が独立していることを理解した今、この質問は少し混乱しているようです。質問の基本は、2つの機能が関連していると思わせたメモからの混乱にあるため、質問の文言を変更せず、違いを説明する受け入れられた回答を許可するのは理にかなっていると思います。
groovy - @CompileStaticを使用したswitch-case-breakステートメントのGroovy 2.1.0の奇妙な動作
私は初心者の groovy プログラマーであり、静的コンパイル (@CompileStatic
注釈) を使用した switch-case-break ステートメントの奇妙な動作に直面しました。break
s は無視されているようです。
それはバグですか、それともドキュメントを読んでいるときに何かを見逃したのですか。
環境:
テストケース:
出力:
2 番目のテスト: コメントするだけ@CompileStatic
そして、すべてがうまくいきます:
json - Grails 2.5.0 の静的コンパイル、コントローラー、および grails 機能
Grails の静的コンパイル、特に GrailsCompileStatic をテストしています。ドキュメンテーションは、Grails のどの動的機能がサポートされていないかを説明するのに限定されています。私のテスト コントローラーは非常に単純ですが、既に問題が発生しています。
アプリケーションをコンパイルすると、2 つのコンパイル時エラーが発生します。JSON
1 つ目はオブジェクトのプロパティの欠落に関するもので、2 つ目はクロージャのrequest
メソッドの欠落に関するものです。json
withFormat
私は何か間違ったことをしているようにGrailsCompileStatic
見えますか、これらの機能で動作しませんか?
groovy - @CompileStatic を使用して別のクロージャーを呼び出す
@CompileStatic の下で別のクロージャーからクロージャーを暗黙的に呼び出すと、呼び出し元はどういうわけか再帰ループに入ります。コードの問題を見つけることができますか、それとも Groovy の問題ですか?
[Groovy バージョン: 2.4.5]
注: この SOの質問では同様の問題について説明していますが、それに関連する Groovy の問題は修正されていると述べています。
groovy - クロージャ内でタイプ Map の属性を参照する際のエラー
次のコード セグメントで、コンパイラが map 属性についてはエラーを出すが、他のタイプの属性についてはエラーを出さないのはなぜですか。
this
私が物事を正しく理解していれば、クロージャーの内部は、それを囲むクラスのインスタンスを参照することになっています。
注: Groovy バージョン: 2.4.5
java - @CompileStatic アノテーションを尊重するように GrovyClassLoader を構成する
Groovy に実装され、構成ファイルを介して提供されるビジネス ルールを実装するカスタム Java ライブラリがあります。GroovyClassLoader を使用してビジネス ルールをコンパイルし、次のように目的のクラスを返します。
構成ファイルに埋め込まれたビジネス ルールには、クラス レベルで @CompileStatic アノテーションが付けられます。
静的コンパイルを行うように GroovyClassLoader を構成するにはどうすればよいですか?
CompilerConfiguration (つまり、GroovyClassLoader(ClassLoader loader, CompilerConfiguration config)) を使用して GroovyClassLoader を作成する必要があると思いますが、これを達成するために CompilerConfiguration を構成するための特定の情報を見つけるのが困難です。
GroovyClassLoader を静的にコンパイルするように構成する方法の例を誰か提供できますか?
ありがとう!