Question

Is there any good way too get a indication if a computer is capable to run a program/software without any performance problem, using pure JavaScript (Google V8), C++ (Windows, Mac OS & Linux), by requiring as little information as possible from the software creator (like CPU score, GPU score)?

That way can I give my users a good indication whether their computer is good enough to run the software or not, so the user doesn't need to download and install it from the first place if she/he will not be able to run it anyway.

I thinking of something like "score" based indications:

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

That way can I only calculate those scores on the users computer and then compare them, as long as I'm using the same algorithm, but I have no clue about any such algorithm, whose would be sufficient for real-world software for desktop usage.

Was it helpful?

Solution

I would suggest testing on existence of specific libraries and environment (OS version, video card presence, working sound drivers, DirectX, OpenGL, Gnome, KDE). Assign priorities to these libraries and make comparison using the priorities, e.g. video card presence is more important than KDE presence.

The problem is, even outdated hardware can run most software without issues (just slower), but newest hardware cannot run some software without installing requirements.

For example, I can run Firefox 11 on my Pentium III coppermine (using FreeBSD and X server), but if you install windows XP on the newest hardware with six-core i7 and nVidia GTX 640 it still cannot run DirectX 11 games.

This method requires no assistance from the software creator, but is not 100% accurate. If you want 90+% accurate information, make the software creator check 5-6 checkboxes before uploading. Example:

  • My application requires DirectX/OpenGL/3D acceleration
  • My application requires sound
  • My application requires Windows Vista or later
  • My application requires [high bandwith] network connection

then you can test specific applications using information from these checkboxes.

Edit: I think additional checks could be:

  • video/audio codecs
  • pixel/vertex/geometry shader version, GPU physics acceleration (may be crucial for games)
  • not so much related anymore: processor extensions (SSE2 MMX etc)
  • third party software such as pdf, flash, etc
  • system libraries (libpng, libjpeg, svg)
  • system version (Service Pack number, OS edition (premium professional etc)
  • window manager (some apps on OSX require X11 for functioning, some apps on Linux work only on KDE, etc)

These are actual requirements I (and many others) have seen when installing different software.

As for old hardware, if the computer satisfies hardware requirements (pixel shader version, processor extensions, etc), then there's a strong reason to believe the software will run on the system (possibly slower, but that's what benchmarks are for if you need them).

OTHER TIPS

For GPUs I do not think getting a score is usable/possible without running some code on the machine to test if the machine is up to spec. With GPU's this is typically checking what Shader Models it is able to use, and either defaulting to a lower shader model (thus the complexity of the application is of less "quality") or telling them they have no hope of running the code and thus quitting.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top