diff options
author | Thomas Graf <tgr@lsx.localdomain> | 2008-05-07 11:18:30 (GMT) |
---|---|---|
committer | Thomas Graf <tgr@lsx.localdomain> | 2008-05-07 11:18:30 (GMT) |
commit | b7c5bf98c4079304f78242d8b3c65451efc12b77 (patch) | |
tree | 055260585876f1e0e4602fb3719fc53d080d31fc /lib | |
parent | dc883cc14978fe2fc10f173c145ffc4d0c1178b0 (diff) | |
download | libnl-b7c5bf98c4079304f78242d8b3c65451efc12b77.zip libnl-b7c5bf98c4079304f78242d8b3c65451efc12b77.tar.gz libnl-b7c5bf98c4079304f78242d8b3c65451efc12b77.tar.bz2 |
Improve performance by using malloc() over calloc() in critical places
As pointed out by Regis Hanna, a considerable performance gain can be
achieved by using malloc() over calloc() when allocating netlink message
buffers. This is likely due to the fact that we use a complete page for
each message.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/msg.c | 4 | ||||
-rw-r--r-- | lib/nl.c | 2 |
2 files changed, 4 insertions, 2 deletions
@@ -372,10 +372,12 @@ static struct nl_msg *__nlmsg_alloc(size_t len) if (!nm) goto errout; - nm->nm_nlh = calloc(1, len); + nm->nm_nlh = malloc(len); if (!nm->nm_nlh) goto errout; + memset(nm->nm_nlh, 0, sizeof(struct nlmsghdr)); + nm->nm_protocol = -1; nm->nm_size = len; nm->nm_nlh->nlmsg_len = nlmsg_total_size(0); @@ -482,7 +482,7 @@ int nl_recv(struct nl_handle *handle, struct sockaddr_nl *nla, page_size = getpagesize(); iov.iov_len = page_size; - iov.iov_base = *buf = calloc(1, iov.iov_len); + iov.iov_base = *buf = malloc(iov.iov_len); if (handle->h_flags & NL_SOCK_PASSCRED) { msg.msg_controllen = CMSG_SPACE(sizeof(struct ucred)); |