C++ プロジェクトで C で記述された高性能/並列グラフ ライブラリを使用しています。構造体stinger
(グラフのデータ構造) と次のような操作を提供します。
int stinger_insert_edge_pair (struct stinger *G,
int64_t type, int64_t from, int64_t to,
double weight, int64_t timestamp) { .... }
ただし、ほとんどの場合、タイムスタンプ、重み、または型を指定したくありません。デフォルトのパラメータはいいでしょう。また、OOP のようなインターフェースがあればいいでしょう:G->insertEdge(u, v)
の代わりにinsert_edge_pair(G, u, v, ...)
.
だから私は次のようなアダプタークラスを作成することを考えていました
class Graph {
protected:
stinger* stingerG;
public:
/** default parameters ***/
double defaultEdgeWeight = 1.0;
/** methods **/
Graph(stinger* stingerG);
virtual void insertEdge(node u, node v, double weight=defaultEdgeWeight);
};
このメソッドは、適切なパラメーターを指定してinsertEdge(...)
呼び出すだけです。stinger_insert_edge_pair(this->stingerG, ...)
ただし、ここではパフォーマンスが重要な側面です。このようなアダプター クラスの使用に関連するパフォーマンスの低下はどのようなものですか? 「ネイキッド」ライブラリを使用する場合と比較して、パフォーマンスが低下することは予想できますか?