There are many ways to make a profit; one of them is to make a better product than the competition, but sometimes that alone is not enough, especially when you make the components of complex devices like computers. So maybe you could think about building loopholes into your product that make the competition’s product look inferior when used in the same system? There are suggestions that’s what nVidia has been doing:
PhysX is designed to make it easy for developers to add high-quality physics simulation to their games, so that cloth drapes the way it should, balls bounce realistically, and smoke and fragments (mostly from exploding barrels) fly apart in a lifelike manner. In recognition of the fact that game developers, by and large, don’t bother to release PC-only titles anymore, NVIDIA also wisely ported PhysX to the leading game consoles, where it runs quite well on console hardware.
If there’s no NVIDIA GPU in a gamer’s system, PhysX will default to running on the CPU, but it doesn’t run very well there. You might think that the CPU’s performance deficit is due simply to the fact that GPUs are far superior at physics emulation, and that the CPU’s poor showing on PhysX is just more evidence that the GPU is really the component best-equipped to give gamers realism.
Some early investigations into PhysX performance showed that the library uses only a single thread when it runs on a CPU. This is a shocker for two reasons. First, the workload is highly parallelizable, so there’s no technical reason for it not to use as many threads as possible; and second, it uses hundreds of threads when it runs on an NVIDIA GPU. So the fact that it runs single-threaded on the CPU is evidence of neglect on NVIDIA’s part at the very least, and possibly malign neglect at that.
Whether it is malign remains to be seen (the use of Occam’s Razor may well apply here, but then again it may not), but this is still an interesting development: in a world where most new inventions are part of larger systems, the battle for sales isn’t simply a matter of making your own product better. Granted, talking down the value of a competitor’s product has been a core strategy of public relations for years, but actually attenuating that value in deployment strikes me as being something pretty new, if only because it wasn’t really possible before. Unless anyone can suggest a situation where this has happened before?
Personally I doubt its malicious, its just a standard issue with using a closed source library, their needs may not be your needs, may not be someone else’s needs etc etc. One part that you do not use, may get old and slow and you do not care because you do not use it.
Personally I’m not to keen on closed source middleware, it just seems like a bad idea to get into that dependent a relationship.
Ever had the company providing some middleware go bust?
Every had to decompile and patch up their code so it works?
I have…