我在 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, ...)
使用适当的参数调用。
但是,性能是这里的一个关键方面。使用这样的适配器类有什么性能损失?与使用“裸”库相比,我是否应该期望性能下降?