Cリストがあり、push_back
関数を実装しました:
bool_t push_back_clist(clist_ptr pList, void* item)
{
if(pList)
{
node_ptr pNode = new_node(item, pList->sizeof_item);
if(!pNode) return FALSE;
if(!pList->head)
pList->head = pList->tail = pNode;
else
{
pList->tail->next = pNode;
pNode->prev = pList->tail;
pList->tail = pNode;
}
pList->size++;
return TRUE;
}
return FALSE;
}
static node_ptr new_node(void* data, size_t sizeof_item)
{
node_ptr pNode = (node_ptr) malloc(sizeof(node_t));
if(!pNode) return NULL;
pNode->data = malloc(sizeof_item);
if(!pNode->data)
{
free(pNode);
return NULL;
}
memcpy(pNode->data, data, sizeof_item);
pNode->next = pNode->prev = NULL;
return pNode;
}
push_back_clist
それは機能しますが、関数とメソッドを比較するとstd::list.push_back
、関数には約 2 倍の時間が必要であることに気付きました。なんで?関数のパフォーマンスを改善するにはどうすればよいですか? ありがとう。