埋め込み:LUA対モノラル
-
05-09-2019 - |
質問
私はC / C ++アプリケーションでのモノ(.NETのオープンソース実装を)埋め込むと人々の経験についての公聴会に興味があります。それはどのようにこのようなアプリケーションを配布し、依存関係が何しているのですか?私は、OS X上でテストしているとのモノは、巨大なフレームワーク(数百MB)として提供されます。私のアプリのユーザーはすべて、この大きな枠組みを必要とするか、それがダウンして除去することができるか、すべてがメインの実行ファイルにコンパイルされています。
私は以前にC ++アプリケーションでのLuaを埋め込むと経験を持っている、と私は私のメインの実行ファイルで静的に全体のluaインタプリタをリンクすることができますので、それは本当によく働きます。だから私は、外部依存関係を持っていません。それはモノと似た何かをすることは可能ですか?
彼らはLuaのに比べて、モノを見つけましたか?にコメントすることができ、ここで任意のLuaの人々
PS:埋め込むことにより、私はC ++モノ環境を初期化し、.NETアセンブリをロードし、それを実行した後との間の通信を可能にするアプリケーションは、C#コードは、アセンブリとメインの実行中にC ++の方法で言う
を意味他のヒント
これは2歳質問です。だから、状況は今異なってくることがあります。
私にとって、最も重要な点は、GCました。インクリメンタルGCが必要なので、私は、インタラクティブ・アプリやゲームのためのLuaを埋め込まれました。現在、Luaの5.1は正確な、インクリメンタルGCを持っていますが、私はモノの増分または正確GCのいずれかの証拠を発見しませんでした。だから、メモリは(でも、それは非常に小さなです!)リークし、そしてアプリケーションが断続的に苦労しています。
人は、GCの一時停止は、いくつかのパラメータをチューニングして、オブジェクトをプールすることによって解決することができますが、私が経験したように、これはのことはありませんのはの時間をかけての配布GC負荷のいずれかの種類せずに解決されると言いますGCでのアプローチ。世代別GCは、分散アルゴリズムの一つであるが、それはあまりにもラフ、ほとんど役に立たないのです。
あなたは一生のパターンを制御するかどうかあなたのコード内で使用されるオブジェクトをプールすることにより、インスタンスを再利用することはできませんので。 (基本クラスライブラリなど)
だから私は、インタラクティブ/(ソフト)リアルタイムアプリケーションのためのC#のプラットフォーム(少なくともまだモノや.NETなど)をお勧めしません。
<時間>編集
私は、任意の増分/同時近づいGCはモノラルまたは.NET上に提示されるかどうかわかりません。彼らはGCの種類を提供についてあなたは確かにすることができた場合は、もちろん、それは:)を使用して大丈夫です。