Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将未使用的类留在c++;项目_C++ - Fatal编程技术网

C++ 将未使用的类留在c++;项目

C++ 将未使用的类留在c++;项目,c++,C++,比如说,我有一个名为foo的类,它执行了一些我发现由库bar更好的功能 假设我删除了foo的所有引用和包含,它是否仍然会导致运行时/编译时效率低下,并且我是否必须从项目中删除代码,我所做的是否足够,或者是否依赖于此编译器。是的,您应该从项目中删除未使用的代码。原因不是太多的效率或代码大小(对于任何现代链接器都不会有影响),而是一种称为“软件腐烂”的现象 如果您的项目中有未使用但可用的代码,迟早会有人尝试再次使用它,但由于代码不可用且未维护,该代码可能会过时,并可能在生产中造成严重问题。进一步阅读

比如说,我有一个名为
foo
的类,它执行了一些我发现由库
bar
更好的功能


假设我删除了
foo
的所有引用和包含,它是否仍然会导致运行时/编译时效率低下,并且我是否必须从项目中删除代码,我所做的是否足够,或者是否依赖于此编译器。

是的,您应该从项目中删除未使用的代码。原因不是太多的效率或代码大小(对于任何现代链接器都不会有影响),而是一种称为“软件腐烂”的现象

如果您的项目中有未使用但可用的代码,迟早会有人尝试再次使用它,但由于代码不可用且未维护,该代码可能会过时,并可能在生产中造成严重问题。进一步阅读:


这并不是一个空洞的威胁——类似的事情曾经根除了整个贸易公司,因为他们因为一个与软件腐败有关的软件缺陷而损失了所有的钱:

这取决于链接器

如果构建链中的程序(编译器、链接器等)可以检测到任何符号未被使用,则可以安全地删除它们


此外,如果该类未使用,则无法判断它是否已被删除-因此任何适当的链接器都会将其删除。

如果您仍然编译包含未使用代码的文件,则是,这将影响您的编译时间

如果您正在构建库,则该类型也将包括在内,即使未使用,因此它将影响库的大小

运行时影响将是最小的,但不是零-加载库时,动态链接器仍需要在您的类型上花费几纳秒的时间

如果您正在构建一个可执行文件,任何合适的编译器/链接器都应该能够消除未使用的代码,因此唯一的影响就是构建时间


删除死代码。让您的版本控制系统(git、cvs等)为后代记住它,但将其从您的项目中删除。

如果您的链接器看不到被放弃的文件,那么它们不会导致性能问题。然而,在试图维护代码时可能会有点混乱。您从未调用过的代码是无限高效的。你不会说任何关于你使用的链接器的事情,但是一个好的链接器会删除死代码。如果不这样做,就不容易注意到,二级和三级缓存的低效率很难回头看。常用的全程序优化也是完全消除它的一个好方法。我为没有实现上一次服务器更改的开发人员感到难过。@Rietty这篇文章与其说是关于开发人员,不如说是关于软件腐烂:)