0

ご存知のように、Cappuccino は Objective-C / Smalltalk のディスパッチ メカニズムを実装して、objj_msgSend と呼ばれる特別なメソッドでオブジェクトにメッセージを送信します (~オブジェクトのメソッドを呼び出します)。

[someObject someMethodToInvocate: aParameter];

明らかに、これによりオーバーヘッドが発生するため、速度が低下します。誰かがこのメッセージ送信と JavaScript でメソッドを実行する通常の方法との速度比較を提供できるかどうか知りたいです…</p>

someObject.someMethodToInvocate(aParameter);
4

3 に答える 3

4

あなたのコメントの中で、あなたはカプチーノアプリケーションの文脈で「一般的に」疑問に思っていると言います。その場合、テストは簡単です。GitHubIssuesなどのカプチーノアプリケーションを実行し遅いかどうかを自分で判断します。メインテーブルをスクロールしてみて、いくつかのエントリを選択してください。objj_msgSendは、このようなアプリケーションで考えられるあらゆるユースケースで広く使用されているため、カプチーノが「一般的に」速いか遅いかがわかります。

結局のところ、実際にもっと具体的なことを考えているのであれば、カプチーノについてはメッセージパッシングを使用するように強制するものは何もないことに注意してください。Objective-Cの場合と同様に、パフォーマンスをより重視する必要がある場合は、いつでも「メタルにドロップダウン」(この場合は純粋なJavaScript)できます。タイトなループがあり、objj_msgSendによって提供される追加機能が必要ない場合は、関数を直接呼び出すだけです。目的-Jは気にしません。

于 2010-11-11T19:09:47.100 に答える
1

objj_msgSendは、直接呼び出しよりも約 2 ~ 2.5 倍遅い純粋なメソッド呼び出しの簡単なテスト用です。

それが可能にする高度な機能を考えると、それは実際には非常に優れています.

于 2010-11-12T15:21:54.800 に答える
-2

これは 2 年遅すぎますが、これは少し不適切な質問です (決して悪い質問であると言っているわけではありません)。objj_msgSend が Smalltalk/Obj-C/Obj-J 固有の機能であると想定している場合、objj_msgSend の速度を疑問視する意味はありません。

Javascript には常にこの機能がありました。

検索: call() および apply() メソッド... (簡単な Google 検索で次のような記事が表示されます -> http://vikasrao.wordpress.com/2011/06/09/javascripts-call-and-apply -メソッド/ )

jQuery/Prototype/etc... と同じ問題です。それらはすべて問題なく、ダンディで便利です。しかし、それらは開発コミュニティを傷つけます。なぜなら、誰もが言語を便利にするコア言語機能を学ぶ代わりに、これらのフレームワークに依存しているからです。

自分自身と開発コミュニティのために、フレームワークではなく自分の言語を学びましょう。使用する言語を知っている場合、使用するフレームワークは無関係です。それらを使用するか、自分で構築するだけです。その時点でできるはずだからです。

それが私の意図ではなく、役に立ち、見下すものではないことを願っています。:)

于 2012-03-03T17:25:34.547 に答える