0

在 windows visual c++ 中编程时,使用 windows 窗体或 windows 控制台是否有任何差异(性能)。

例如,我听说控制台中的 printf() 会使程序非常慢。如果我想更新表单中的标签怎么办?使程序也变慢了吗?

为什么我问。我一直在编写控制台应用程序,但现在我想为我的应用程序创建一个漂亮的 GUI。

如果我准备好了类(例如,directshow、opencv 和连接所有东西的自定义类),是否很难切换到 Windows 窗体应用程序?

谢谢!

4

3 回答 3

0

通常在性能上没有差异,因为 Windows 控制台也使用 WinApi,它不再像 DOS,它主要是独立的(Win 9x)。但是,刷新可视化组件界面也需要一些时间。例如,当您有一个写入 10000 行文本的应用程序时,它在控制台中的运行速度将比在备忘录中快得多。但在许多情况下,它是可以避免的,或者至少您应该能够使其速度具有可比性。给定示例中最简单的方法是隐藏添加项目时间的备忘录并在最后显示结果。这将加快速度,因为每次添加项目时都会刷新界面,而隐藏时则不会。

因此,总体而言,您的应用程序在使用 GUI 时可能会运行得慢一些,但正确编码可能会使差异(几乎)不可见。

于 2013-07-05T11:18:22.573 回答
0

控制台模式的“成本”printf主要是,如果您将大量文本输出到屏幕,它就会滚动。例如,如果您将其与将其全部输出到文件进行比较,它将快 10-100 倍。但是,如果您随后type myfile.txt显示文件,所花费的时间几乎就是输出到屏幕和输出到文件之间的差异。

在不滚动的情况下更新标签或打印少量文本应该差不多,除非您真的每秒执行数百次,否则在您的总运行时间中可能并不明显。

于 2013-07-05T11:27:10.337 回答
0

任何类型的输出——通过或更新标签打印到控制台printf——都有一些运行时成本。您听到的可能printf比您想象的要贵,所以如果您经常调用它,您可能会发现这是花费最多时间的地方。

当然,更新标签的功能或发射洲际弹道导弹的功能也是如此。如果你经常这样做,影响会变得非常明显。

于 2013-07-05T11:11:15.193 回答