添加额外的标题会使程序变慢吗
Does adding additional headers make programs slower?
例如,以下两个程序的执行时间会节省吗?
#include <iostream>
int main()
{
int a,b;
std::cin >> a >> b;
std::cout << a+b;
return 0;
}
and
#include <ctime>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cassert>
#include <time.h>
#include <algorithm>
#include <iostream>
#include <vector>
int main()
{
int a,b;
std::cin >> a >> b;
std::cout << a+b;
return 0;
}
如果是这样的话,总是包含一堆头文件是一种好的做法吗?如何测试执行一个程序需要多长时间?使用预定义的输入。
添加额外的头是否会使程序变慢?
否。当然,现在会有人带着一些角落的案例来反驳这一点。但是不,额外的头一般不会使C或C++程序变慢。
如果是的话,总是包含一堆头文件是一种好的做法吗?
不要包括"一堆"。包括你使用的那些。包含额外的标头会增加编译时间,如果标头来自您自己的项目,则每当您触摸任何标头时,都可能导致重新编译项目中的许多对象。
如何测试执行程序需要多长时间?
使用秒表。或time()
。或CCD_ 2。或QueryPerformanceCounter()
。很多方法。
例如,以下两个程序的执行时间会相同吗?
是。包括额外的头文件不会影响程序的执行时间。
头文件在编译时处理。所以他们(通常)不会减慢你的代码。
可能存在一些角落的情况,包括特定的标头可能会获得某种算法的不同实现,这本质上比没有该标头的不同实现慢。
如果是的话,总是包含一堆头文件是一种好的做法吗?
否。您应该为正在使用的每种类型都包含头文件,不能多也不能少。
如何测试执行程序需要多长时间?使用预定义的输入。
这样做有几种可能性。您可以在评测工具中运行程序,也可以自己测量时间(在脚本中)。
添加额外的头是否会使程序变慢?例如,以下两个程序的执行时间是否相同?
添加额外的头不会影响程序的运行时间。然而,这将影响编译时间,因为编译器现在必须在程序中包含这些额外的头。
如果是的话,总是包含一堆头文件是一种好的做法吗?
最好只包含将在项目中使用的头文件。此外,请注意不要包含C版本的标头和C++版本的标头,否则可能会遇到问题。
如何测试执行程序需要多长时间?使用预定义的输入。
我建议您查看ctime库:http://www.cplusplus.com/reference/ctime/
请记住,执行时间是特定于您的机器的。
我认为这会使程序变慢,因为当你调用像cout或cin这样的函数时,编译器会在程序员声明的头文件中找到它
更多的头文件需要更多的时间来找到函数定义
此外,如果包含额外的头文件不会增加编译时间,那么ide(集成开发环境)应该省略包含系统的头文件
希望这是有意义的
- C++ - 从 MFC 应用程序启动记事本,并将其默认标题从 "Untitled - Notepad" 更改为其他内容
- 如何随机化程序的窗口标题?
- 如何在QT中获取背景应用程序窗口标题
- q输入对话框使 Unity 任务栏和标题栏在全屏应用程序中可见
- 我的QT程序显示带有标题的空白窗口
- 如何在RPi3上的交叉编译应用程序的主窗口上显示边框和标题栏
- 添加额外的标题会使程序变慢吗
- 仅使用标题栏中的[X]按钮关闭MFC应用程序并禁用ESC快捷方式
- C :将程序转移到标题中
- C :编写标题文件,以提高程序的效率
- MINGW32(OGRE3D CEGUI GLM应用程序)的标题冲突错误
- Cinder 无法在应用程序运行时更新窗口的标题
- C++简单的类程序无法编译。我搞砸了包含标题吗? 'Error redefinition of a class'
- 如何在OSX应用程序的标题栏中添加Qt中的全屏图标
- 在Win32程序中C++,如何修改菜单的标题?
- f() 如何在给定程序中工作,标题为返回引用
- 在窗口标题和消息框中显示错误的语言:win32应用程序,opengl
- CPP:-1: 错误: C1041: 无法打开程序数据库;无标题-构建-桌面调试\VC120.pdb'
- 是否有一种方法可以改变MFC SDI应用程序的标题字体?
- 如何在Qt应用程序中编辑默认的窗口标题和框架?