According to a competition programming site, where users can submit single source files to be compiled and run, "programs are run on a modern processor but times are scaled to a 700 MHz Pentium III ... with 16MB datasize limit and 1MB stacksize limit".

How can I estimate this scaling factor when running on a modern(ish) processor, such as a i3-8100 CPU @ 3.60GHz? Is this even possible, or would runtimes vary too greatly due to things like cache, instruction set, different clock speeds, etc. too be able to get a useful number?

  • 2
    Is this code dominated by floating-point computation or integer computation? Compute bound or memory bound? Single-threaded or multi-threaded? Scalar or SIMD-vectorized? If you know the answer to these questions, you could do a back-of-the-envelope calculation. Or you could look at relevant SPEC CPU benchmark data (you will need multiple generations of SPEC to span the time between Pentium3 and i3).
    – njuffa
    Jan 8, 2021 at 5:52
  • 4
    Is the site in question still active? In that case I'd ask there.
    – UncleBod
    Jan 8, 2021 at 7:00
  • @njuffa it is only integer computation, I believe compute bound and single threaded. I don't know if it is SIMD or not - does that depend on the compiler?
    – qwr
    Jan 8, 2021 at 8:08
  • @UncleBod I can ask. It's USACO
    – qwr
    Jan 8, 2021 at 8:26
  • 7
    I would assume that "scaled to a 700 MHz Pentium III" is a very poetic way of expressing what they are actually doing (whatever that is), unless they have a cycle-exact Pentium III emulation executing these programs - which is very doubtful. And if you want to compare execution time between a Pentium III and an i3: No, that is not a constant factor, it varies wildly with the kind of code executed.
    – dirkt
    Jan 8, 2021 at 10:15


Browse other questions tagged .