性能差异C ++,使用Windows窗体与Windows控制台

时间:2013-07-05 11:07:58

标签: c++ winforms performance console-application

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

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

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

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

谢谢!

3 个答案:

答案 0 :(得分:0)

任何类型的输出 - 通过printf向控制台打印或更新标签 - 都会产生一些运行时成本。您所听到的可能是printf比您想象的更贵,所以如果您经常打电话,您可能会发现这是花费大部分时间的地方。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

更新标签或在不滚动的情况下打印少量文本应具有可比性,除非您确实每秒执行数百次,否则您的总运行时间可能并不明显。