[Nfd-dev] Avoid inline functions to reduce code size bloat

Junxiao Shi shijunxiao at email.arizona.edu
Sat Jan 31 22:23:16 PST 2015


Dear folks

Back in June, in issue 1694, I have pointed out that ndn-cxx has a tendency
of over-using inline functions.
According to C++ Dos and Don'ts
<http://www.chromium.org/developers/coding-style/cpp-dos-and-donts#TOC-Stop-inlining-code-in-headers>
from
Chromium project, using too much inline functions creates additional work
for the linker, because every file that includes those headers would emit a
version of an inline function in the object file (.o), and the linker has
to eliminate those duplicates.
There's also evidence that inline functions can lead to binary size bloat,
which is bad news of devices with small memory or storage, such as home
routers and IoT gadgets. Even if ndn-cxx can fit into those devices,
bloated binaries will consume precious memory space, and reduce available
memory for ContentStore.

A decision was made in 20140708 conference call
<http://redmine.named-data.net/issues/1694#note-6> that we should stop
adding new inline functions unless they are trivial getters/setters, but
fixing old code is low priority.
Of course, if a function is template, and all possible template parameters
are not known in advance, it can be inline.


During the review of issue 2183, I suggested Change Owner to move inline
functions into .cpp, as per the decision above.
However, this suggestion was rejected.
The reply was "whatever you saying. I'm refusing to do change here". No
valid reason is given with this reply.


To finally resolve this and similar disputes, I request a review on the
decision about inline function usage.
Please give your opinion about where inline functions should be used, along
with necessary reasons and citations.

Yours, Junxiao
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/nfd-dev/attachments/20150131/6280d848/attachment.html>


More information about the Nfd-dev mailing list