これは奇妙な質問に聞こえるかもしれませんが、私の部署では次のような状況で問題が発生しています。
ここでは、処理できるように、必要に応じて動的にロードし、後でアンロードするサーバーアプリケーションで作業しています。パフォーマンスの問題。
しかし、私たちが使用している関数は、入力パラメーターと出力パラメーターをSTLオブジェクトとして渡しているため、Stack Overflowの回答で述べたように、これは非常に悪い考えです。(投稿にはいくつかの±ソリューションとハックが含まれていますが、すべてが非常に堅実に見えるわけではありません。)
明らかに、入力/出力パラメーターを標準のC ++型で置き換え、関数内で一度それらからSTLオブジェクトを作成できますが、これによりパフォーマンスが低下する可能性があります。
1台のPCで処理できないほど大きくなる可能性のあるアプリケーションをビルドすることを検討している場合、STLをテクノロジとしてまったく使用しないでください。
この質問についてのさらなる背景:質問について
いくつかの誤解があるようです:問題は次のとおりです:
私のアプリケーションは作業を完了するために膨大な量のパフォーマンス(CPU、メモリ)を使用しているので、この作業を分割したいと思います(プログラムはすでに複数の関数に分割されているため)アプリケーションからいくつかのDLLを作成し、それらのDLLのエクスポートテーブルにいくつかの関数を配置することはそれほど難しくありません。これにより、次の状況が発生します。
+-----------+-----------+----
| Machine1 | Machine2 | ...
| App_Inst1 | App_Inst2 | ...
| | |
| DLL1.1 | DLL2.1 | ...
| DLL1.2 | DLL2.2 | ...
| DLL1.x | DLL2.x | ...
+-----------+-----------+----
App_Inst1はMachine1にインストールされているアプリケーションのインスタンスであり、App_Inst2はMachine2にインストールされている同じアプリケーションのインスタンスです。
DLL1.xはMachine1にインストールされているDLLで、DLL2.xはMachine2にインストールされているDLLです。
DLLx.1は、エクスポートされたfunction1をカバーします。
DLLx.2は、エクスポートされたfunction2をカバーします。
次に、Machine1でfunction1とfunction2を実行します。これによりMachine1がオーバーロードされることがわかっているため、App_Inst2にメッセージを送信して、そのアプリケーションインスタンスにfunction2を実行するように要求します。
function1とfunction2の入出力パラメーターはSTL(C ++標準タイプライブラリ)オブジェクトであり、定期的にApp_Inst1、App_Inst2、DLLx.yの更新を行うことをお客様に期待する場合があります(ただし、すべてではなく、Machine1をアップグレードする場合がありますが、 Machine2ではなく、アプリケーションのみをアップグレードし、DLLはアップグレードせず、逆も同様です...)。明らかに、インターフェース(入力/出力パラメーター)が変更された場合、顧客は完全なアップグレードを強制されます。
ただし、参照されるStackOverflow URLで述べたように、App_Inst1またはDLLの1つを単純に再コンパイルすると、システム全体がバラバラになる可能性があるため、この投稿の元のタイトルは、STL(C ++標準テンプレートライブラリ)大規模アプリケーション用。
これにより、いくつかの質問/疑念を解決したことを願っています。