私は、Vaadinと呼ばれるJavaフレームワークを頻繁に使用するアプリケーションをclojureに持っています。 Vaadinは、clojureのJava "proxy"機能を使用していくつかのコールバックを使用します。しかし、クロージャー機能でプロキシが呼び出されるたびに、かなりの遅延があります(時には100ミリ秒になります)。私はこれをスピードアップできる方法はありますか?clojureプロキシへの呼び出しが遅い
答えて
新しいreify
マクロは、proxy
よりも高速です。単一のインタフェースを実装するだけでよい場合に使用できます。例えば
、あなたがjava.awt.event.ActionListener
を実装する必要がある場合は、次のようなコードを使用することができます。
(import 'java.awt.event.ActionListener 'javax.swing.JButton)
(let [a-button (JButton. "Click Me")]
(.addActionListener a-button
(reify ActionListener
(actionPerformed [this ev] (comment do something interesting)))))
何らかの理由でreifyがVaadinインターフェースのcom.vaadin.ui.Button $ ClickListenerで動作しませんでした。これはビーコンですか?com.vaadin.ui.Button $ ClickListenerは静的なインターフェースですか? – Zubair
@Zubair:わかりません。私はそれを動作させる前にreify関数をしばらく使っていなければなりませんでした。最後に 'this'変数を追加しました。どのようなエラーがありましたか? – Ralph
実際、1つの 'reify'形式で複数のインタフェースを実装することができます。 'proxy'に対する制限は' reify'がクラスを拡張することができないということです。 –
- 1. ServiceFabricプロキシの最初の呼び出しは非常に遅い
- 2. pytz.timezoneへの最初の呼び出しがvirtualenvで遅い
- 3. クライアントへのプロキシのメソッド呼び出し時のRemotingException
- 4. Juliaへの最初の呼び出しは遅いです
- 5. lua - クラスデストラクタの遅い呼び出し
- 6. WCF非同期呼び出しが遅い、同期呼び出し高速
- 7. DLLへの呼び出しからAPIへの呼び出し
- 8. 遅延コンストラクタ呼び出し
- 9. 1つのモデルから別のモデルへのRails 2呼び出しが遅い
- 10. Swift:WebServiceへの複数の呼び出しの遅れ
- 11. .NETアプリケーションからSQL Serverへの散発的な呼び出しが遅い
- 12. プロキシはapllyメソッドdont't呼び出し
- 13. Djangoサーバーへの単純なAjax呼び出しの応答時間が遅い - 遅いTTFB
- 14. JavaからClojureを呼び出すときのスコープClojureのスコープ
- 15. 角2ノードサーバーへのHttp呼び出しが呼び出されない
- 16. JavaからClojure 1.3を呼び出す
- 17. clojureで関数を呼び出す
- 18. .NETからClojureを呼び出す
- 19. LibLog - ロガーへの呼び出しの呼び出し
- 20. ライブラリへの関数呼び出しの呼び出し
- 21. 最初の呼び出しでWCFのシリアル化が遅い
- 22. なぜTwitterのAPI呼び出しが遅いのですか?
- 23. TSLINT:への呼び出しが「_.isNull」
- 24. Eclipseへのxmlへのプログラムの呼び出しの呼び出し
- 25. 2回目の呼び出しでurlopenが非常に遅い
- 26. メンバ関数への呼び出しgetName()nullへの呼び出し
- 27. WCFサービスが別のWCFサービスを呼び出すのが遅い
- 28. jquery/backbone.js - 遅延関数呼び出し
- 29. Railsアプリケーション#呼び出しが非常に遅い
- 30. 外部API呼び出し後にWCFプロキシが失敗する
あなたはタイプヒントを入れてみましたか? –
プロキシ名の型ヒントや実装されたメソッドのメソッド引数を追加することを意味しますか? – Zubair
すべての警告を削除するには、 'warn-on-reflection'をオンにしてタイプヒントを入れてください。 –