Okay, "mflops" means "mega (1M) floating-point operations per second". But will it help you much?
Let's see. The application program (including a benchmark)
never does the floating-point operation along. It takes floating-point numbers from other instructions, maybe even from memory. The memory is virtual memory, so it can be swapped on disk. Then data can be taken from other CPU instruction, sent over the bus, and so on. Your application can be preempted by some other process. Even it you simply move your mouse, it takes some CPU time; no, there is no a process polling the mouse device, but even the handling of the hardware interrupts caused by the mouse takes some CPU work at the
kernel ring, and then the events are generated and propagated to UI, just to show the mouse pointer, forget about handling application-level mouse events.
So, what are you actually measuring with some application program such a benchmark tool? The above is written to show you that the question is not trivial at all.
As with all fields of knowledge, you have a choice: you can create your own benchmark software and principles of measuring, including the metrics themselves, or you can learn the field from the literature; or you can combine both approaches. Speaking of the first way, I would not say it's impossible: you can do the measurements based on your knowledge of the CPU instruction-set architecture, operation, and, importantly, software: OS and application operation. Here, your "not an expert in C++" doesn't sound very promising. If you were such an expert, it would not be enough, by far. Take the programming language along. By a number of reasons,
pure C++ would not work (the previous paragraphs should give the idea why). So, you would need to learn another thing:
inline Assembly Language (the one embedded in C++; I don't think a stand-along Assembler would be ever absolutely required). But even this would not be enough: CPU operation itself is a very complex thing. If you just need to do some computing and get some result, it would be much easier, but timing requires a lot more knowledge.
But to be practical, in all you create, you have to remember: you can only
compare apples with apples, oranges with oranges. Different ways of benchmarking will give different results. So, ultimately, you would need to get an idea what some other benchmarking application do, at least to compare the results and understand the differences. Frankly, this is one of the hard parts, too. Eventually, you will need to learn
industrial standards on benchmarking, including but not limited to :
http://en.wikipedia.org/wiki/EEMBC[
^],
http://en.wikipedia.org/wiki/SPECint[
^],
http://en.wikipedia.org/wiki/SPECfp[
^],
http://en.wikipedia.org/wiki/Coremark[
^].
By the way, reading documentation provided by those standard organizations can quickly
introduce you to the terminology you were asking about.
Now, how about the second way? Start learning literature on bookmarking. Will it require understanding of all of the mentioned above?
Surprise: yes!
…Well, perhaps in lesser detail. Otherwise you would not understand what the results mean. I forgot one more aspect: you will certainly understand
mathematical statistics and its use, at least the basics. Why. Well, try to time some code; this is easy if you don't want to make it benchmarking, just do timing. First thing you will observer would be the
huge statistical dispersion of the result. So, to time reasonably, you would need to collect serious statistics of your data and measure the
dispersion and other
moments of distribution, interpret these measurements. Please see:
http://en.wikipedia.org/wiki/Statistical_dispersion[
^],
http://en.wikipedia.org/wiki/Probability_distribution[
^].
So, if you want to get started under
really understand benchmarking (if you are still not too much frustrated :-)), go ahead and start learning. Perhaps you could start from here:
http://en.wikipedia.org/wiki/Benchmark_%28computing%29[
^].
But, to be serious, you still need to start from learning CPU operation in detail and the operation of software: OS and application. I'm afraid to say, here even providing link would not immediately help: you should be able to dig into it by yourself.
For additional encouragement, please read one article I think every beginner in software engineering should read:
Peter Norvig, Teach Yourself Programming in Ten Years,
http://norvig.com/21-days.html[
^].
So, if you have been successful in your learning, you already have about 10% of the progress. :-)
—SA