c++ - 有什么好的方法可以指示计算机是否可以运行特定的程序/软件?

标签 c++ algorithm performance v8 measurement

如果计算机能够使用纯 JavaScript(Google V8)、C++(Windows、Mac OS 和 Linux)运行程序/软件而没有任何性能问题,是否有任何好的方法可以通过要求尽可能少尽可能从软件创建者那里获得信息(例如 CPU 分数、GPU 分数)?

这样我可以很好地指示我的用户他们的计算机是否足以运行该软件,因此用户不需要从一开始就下载并安装它,如果她/他不能无论如何都要运行它。

我想到类似“分数”的指示:

CPU: 230 000   (generic processor score)
GPU: 40 000    (generic GPU score)
+ Network/File I/O read/write requirements

这样我就可以只在用户计算机上计算那些分数然后比较它们,只要我使用相同的算法,但我不知道任何这样的算法,它足以真实-世界软件 用于桌面。

最佳答案

我建议测试特定库和环境的存在(操作系统版本、显卡存在、工作声音驱动程序、DirectX、OpenGL、Gnome、KDE)。为这些库分配优先级并使用优先级进行比较,例如显卡的存在比 KDE 的存在更重要。

问题是,即使是过时的硬件也可以毫无问题地运行大多数软件(只是速度较慢),但最新的硬件无法在没有安装要求的情况下运行某些软件。

例如,我可以在我的 Pentium III coppermine 上运行 Firefox 11(使用 FreeBSD 和 X 服务器),但是如果你在具有六核 i7 和 nVidia GTX 640 的最新硬件上安装 Windows XP,它仍然无法运行 DirectX 11 游戏.

此方法不需要软件创建者的帮助,但不是 100% 准确。 如果您想要 90% 以上的准确信息,请让软件创建者在上传前勾选 5-6 个复选框。示例:

  • 我的应用程序需要 DirectX/OpenGL/3D 加速
  • 我的应用程序需要声音
  • 我的应用程序需要 Windows Vista 或更高版本
  • 我的应用程序需要[高带宽]网络连接

然后您可以使用这些复选框中的信息测试特定的应用程序。

编辑: 我认为额外的检查可能是:

  • 视频/音频编解码器
  • 像素/顶点/几何着色器版本,GPU 物理加速(可能对游戏至关重要)
  • 不再那么相关:处理器扩展(SSE2 MMX 等)
  • pdf、flash等第三方软件
  • 系统库(libpng、libjpeg、svg)
  • 系统版本(Service Pack 编号、操作系统版本(高级专业版等)
  • 窗口管理器(OSX 上的一些应用程序需要 X11 才能运行,Linux 上的一些应用程序只能在 KDE 上运行,等等)

这些是我(和许多其他人)在安装不同软件时看到的实际要求。

至于旧硬件,如果计算机满足硬件要求(像素着色器版本、处理器扩展等),那么有充分的理由相信该软件将在系统上运行(可能较慢,但这就是基准测试的目的,如果你需要它们)。

关于c++ - 有什么好的方法可以指示计算机是否可以运行特定的程序/软件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10444622/

相关文章:

php - 在 sql 比较查询之前将长字符串转换为短哈希 - 提高性能?

c++ - 如何为网络客户端编写单元测试?

algorithm - 查找差值大于或等于 D 的两个元素

c++ - 如何使用 C++ 中的 OpenCV 以所需的 fps 捕获视频

algorithm - 如何在 Viola Jones 人脸检测算法中使用 Haar 特征结果

c++ - 高效积累

performance - 当每个字符需要单独放置和格式化时,如何快速渲染文本?

java - Java 中 if/else 与 switch 语句的相对性能差异是什么?

java - 如何将 Eclipse 从 Java IDE 更改为 C++ IDE?

c++ - 如何在没有 Objective-C 的情况下创建 NSAutoreleasePool?