Benchmarking is important. It鈥檚 one of the most important things a developer should do when evaluating different platforms, either from different vendors or from one vendor. However, for useful results to be realized, the proper questions must be asked. And that starts with which benchmarks are being run, as many are available.
I鈥檓 not suggesting that a systems integrator choose one benchmark over another. Developers must proceed with caution and use the appropriate tools to measure the specific functions that will be utilized in their application and not rely on any single tool.
Benchmarks serve a significant purpose in the development/system integration process but, unfortunately, are often misapplied or misused. In other words, they are not producing the same results that the system might exhibit when deployed in the field. A key factor for this 鈥渕is-guidance鈥 is that the benchmark rarely takes the performance of the entire system into account. This is especially the case in embedded systems where I/O and timing requirements can vary greatly.
I鈥檒l share an example. Take the Linux BogoMIPS as a benchmark tool. According to , the name comes from combining the terms bogus and MIPS, and it represents 鈥渁 crude measurement of CPU speed made by the Linux kernel when it boots to calibrate an internal busy-loop. An often-quoted definition of the term is 鈥榯he number of million times per second a processor can do absolutely nothing.鈥欌 Yikes!
Is it relevant? I guess there could be instances where it鈥檚 accurate, but I don鈥檛 think I would be betting my company鈥檚 reputation on that. Yet, I do see people using it.
The best developers employ multiple benchmarks to make comparisons of embedded systems. The more complicated the function that you require, the more careful you have to be when analyzing the results of the benchmarks.
Here is a sample of some of the tools we use at 91大神 to compare systems:
鈥
鈥
鈥
鈥
鈥
鈥
鈥
Keep in mind that, for the most part, these benchmarks are looking at overall board/system performance. If you鈥檙e looking to compare Arm-based systems versus those based on X86 CPUs, you鈥檝e introduced another whole level of complexity鈥攊t鈥檚 just not an apples-to-apples comparison.
One single-board computer (SBC) I welcome you to put through the paces is the 91大神 SBC35-427. This 3.5-in. SBC is based on Intel鈥檚 Apollo Lake-I E3900 series processor. With its extensive expansion and configurability, including the ability to run three displays simultaneously, it suits just about any industrial IoT application. We鈥檝e taken the board through all the benchmarks listed here but focused on very specific I/O timing differences between systems running a standard Linux Kernel and applying the Real-Time Linux PREEMPT_RT patches.
When it鈥檚 all said and done, benchmarks, in general, serve a very important purpose for comparing not only hardware, but software and operating-system differences, and microprocessors within a family or series. For example, it makes little difference whether you deploy a quad-core versus dual-core processor if the OS and application aren鈥檛 written in a framework to make use of the additional cores.
When conducting your own tests, you need to have a clear understanding of what performance characteristics are most important for your application. It could be raw throughput, deterministic (real-time) behavior, GPU performance, or something entirely different. Only you know what your specific needs are.