1

mongodbでのクエリ実行に似たタスクには、埋め込み可能な言語が必要です。言語は高速で、JITとインタープリターの両方を備えている必要があり(JITコンパイルされた頻繁なスクリプトの場合、および1回限りのスクリプトの場合も)、特定のAPI関数(またはクラスなど)を入力するメモリ内ランタイムを備えている必要があります。手作業で(そしてgettime、スレッドスポーンなどのような「組み込み」のものは何もありません)、C APIがあり、ARMで動作する必要があります(MIPSもいいでしょう)、大きすぎないフットプリントもいいでしょう(しかしこれは重要ではありません)。

私には2つの候補があります:

  1. GoogleV8。
  2. Spidermonkey(IonMonkeyのARMサポートがAFAIKを発表しました)。

私はこれまでCプロジェクトへの言語の埋め込みを経験したことがないので、いくつか質問があります。最近、V8はスレッドセーフではないという噂がありましたが、この問題はまだ存在しますか?もしそうなら、スレッドセーフの欠如が問題を引き起こす可能性があるのはどこですか?

また、誰かが私の要件により適した埋め込み可能な言語を提案してくれたら嬉しいです(luaを除いて、私が気にしないことについてのフットプリントが小さいことを除いて、jsと比較して利点を見つけることができません)。

4

1 に答える 1

1

SpiderMonkeyのマルチスレッド埋め込み性がV8のものとどのように比較されるかはわかりませんが、SpiderMonkeyで実行できることは知っています。dev.tech.js-engineには、フォローアップの質問を投稿できるマルチプログラミング埋め込みがいくつかあります。

ブラウザでのWebワーカーの実装では、ワーカーごとに1つのランタイムインスタンスを使用します(単一のプロセスでランタイムを複数インスタンス化できます)-過去数年間、マルチスレッドセーフな単一ランタイムアプローチから移行しました。 Webであり、エンジンにかなりの複雑さを追加します。

マルチプログラミングの代わりに、ノードごとに非同期の選択ベースの実行から完了までのアプローチもあります。

ちょっとしたこと:インタプリタは本当にあなたの要件ではないと思います-あなたの要件は一回限りのコードの起動時間の速さです。SpiderMonkeyにはインタープリターがあり、V8にはありませんが、V8には、その領域で同等のパフォーマンスを提供する高速コードエミッション(「ベースライン」と呼ばれる傾向があります)JITコンパイラーがあります。この機能は、一般的にWeb上のJSにとって重要な要件です。:-)

于 2011-12-22T23:14:15.587 に答える