云性能与桌面性能的比较

3
我开发了一个使用OpenCV和Visual Studio 2013分析视频的应用程序。 我计划在Azure上运行此应用程序,因为假设在云中运行会更快。 但是,令我惊讶的是,在我将Azure实例配置为8个核心时,该应用程序比我的桌面电脑运行得更慢,需要两倍左右的时间。 它是一个64位应用程序,并使用适当的编译器优化进行编译。 有人能帮我理解为什么云中会浪费时间,并且是否有改进时间的方法吗?
该应用程序以视频作为输入(在每种情况下都是本地),并输出包含分析数据的平面文件。
我不确定为什么人们要投票关闭这个问题。 这非常关于编程,如果可能,请帮助我准确定位问题。

1
磁盘速度快慢有多大差别?你是否分离了IO和CPU时间?核心类型/性能是否与你家中的相匹配?你的代码是否使用了所有的核心? - Michael Petrotta
我不确定磁盘情况。不幸的是,我不知道如何在Windows应用程序中分离IO和CPU时间。Azure机器有更多的内存(56GB)而我的家用机器只有16GB;然而,我无法控制Azure所使用的处理器。代码正在使用所有核心,因为当我在Azure上使用单个核心时,它花费了更长的时间(> 8倍于我的桌面)。 - unxnut
我建议分开CPU和IO的测量。如果是我的应用程序,我会在IO特定和CPU特定的代码周围加上计时器,并总结它们各自的值。而且你应该能够找到有关Azure所提供的核心类型的信息,我相信这一点。 - Michael Petrotta
CPU 和 IO 密不可分。代码中的主循环从视频中读取一帧,执行大量处理,并将结果写入一个平面文件。结果通常小于 512 字节并且具有足够的缓冲区,但我认为帧是以非缓冲模式读取的。 - unxnut
3
如果你没有关于服务器单线程性能、实际给定的时间以及机器信息的资料,那这个问题就没什么用了。你的处理器特征是“8核心”,这并不是一个速度特征。你使用的是专用服务器吗?如果这是一些共享 CPU 的云主机,通常你无法获得像单个合理的桌面 CPU 那样的时间分配。首先通过运行一些程序或代码来评估你的台式机和 Azure 机器,并提供 CPU 速度特征。当你看到这个比例时,许多问题将变得更加清晰。 - Valentin Kuzub
谢谢Valentin。我的服务器只是我的笔记本电脑,一台Dell XPS。因此,它专门用于这个任务。我会尝试按照你的建议来测试CPU特性。这确实有所帮助。 - unxnut
1个回答

3

这可能有以下三个原因:

  1. 磁盘IO速度
  2. CPU速度
  3. 内存速度

看一下这里,你可以看到有人实际检查了云与本地的性能比较:Azure compute power: Extra Large VM slow

基本上Ghz很可能会更慢(大约1.6),而磁盘IO速度,虽然是本地的,但通常被限制在300或500 IOPS,仅略高于15k rpm驱动器,远远不及SSD级别。

我不确定内存速度。虽然你可以继续添加核心,但大多数程序,即使针对多个核心进行优化,也具有许多依赖于单个线程的情况,从而降低整个操作的速度。增加Ghz是可以产生巨大差异的。


我敢打赌,它是CPU速度的问题,比例是9:1。 - Valentin Kuzub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接