Is there a way to measure performance without depending on the hardware, i.e. two entirely different computers get the same score for the same code?

I could probably run the program on a server or something, but something local feels more reliable.

  • stifle867@programming.dev
    link
    fedilink
    arrow-up
    3
    ·
    1 year ago

    Im theory you could try counting CPU cycles or something analogous, or algorithmic complexity as the other commenter mentioned. You could also try to measure it in comparison to different code.

    Outside of that, and in any practical sense, no you can’t. Performance measurements are dependent on the machine as much as the software.

    If a car is hardware, and the driver is software, how would you measure the performance of the driver in the different cars? The only way I can think of is if you had 2 different drivers and could compare their times in both cars. If driver 1 is 2x as fast in car 1, and 2x as fast in car 2, you could say driver 1 has a score 2x higher than driver 2.

    • SekoiaOP
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      One option could be to emulate a full CPU and run it on that, and count the cycles on that. One issue is linking/syscalls. Maybe compiling to smth like WASM could work?

      • stifle867@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        I would be interested to hear if you get far down that road. It sounds infinitely more difficult than running code and timing it.

        Are you able to expand what problem lead you to this question (out of curiosity)?

    • FuzzChef@feddit.de
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      CPU cycles depend on the instruction set of the hardware. This would also require compilation without any optimization to avoid even software dependency.